<<前 [TOP] 次>>
商品を格納するテーブルを作成します。
テーブルの名前は必ず複数形にするのがルールです。
この後実際にRubyでコードを書いていくモデルクラスというものが登場しますが、そのモデルクラスの名前は単数形で最初の文字は大文字というルールがあります。
このようにルール通り名前をつけておくと、モデルクラスでわざわざテーブル名を指定しなくてもRailsが自動的にテーブルを探し出すことが出来ます。
では商品のテーブルを作成してみましょう。
「goods」という単語を使い、モデル名は「good」となります。
作成するフィールドの内容は次のようにします。
Railsでは「scaffold」を使ってテーブルを生成していきます。
rails generate scaffold モデル名(単数形) フィールド名1:データ型 フィールド名2:データ型
ではコマンドプロンプトで「shop」フォルダに移動し、「rails generate scaffold good goods_id:integer title:string description:text image_url:string price:decimal date:datetime maker:string category:string
」と入力します。
これでアプリケーションに必要なモデルやビューなどが作成されます。
では「db」フォルダの「migrate」フォルダにある「create_goods.rb」ファイルを見てみます。
【db/migrate/create_goods.rb】
class CreateGoods < ActiveRecord::Migration[6.0] def change create_table :goods do |t| t.integer :goods_id t.string :title t.text :description t.string :image_url t.decimal :price t.datetime :date t.string :maker t.string :category t.timestamps end end end
priceフィールドの型「decimal」を10桁、小数点第2位の数字、デフォルトの値が「0」に定義したいので、「create_goods.rb」ファイルを以下のように修正します。
「t.decimal :price, precision: 10, scale: 2, default: 0」の行が変更した部分です。
【db/migrate/create_goods.rb】
class CreateGoods < ActiveRecord::Migration[6.0] def change create_table :goods do |t| t.integer :goods_id t.string :title t.text :description t.string :image_url t.decimal :price, precision: 10, scale: 2, default: 0 t.datetime :date t.string :maker t.string :category t.timestamps end end end
では、実際にこのファイルをデータベースに適用してみます。
コマンドプロンプトで「rails db:migrate
」と入力してください。
Railsがまだ適用していないマイグレーションを探し出してデータベースに適用してくれます。
実際にテーブルが出来ているかどうか見てみます。
コマンドプロンプトでMySQLに接続して「use shop_development;
」と入力すると「shop_development」データベースに接続できます。
その後「show tables;
」と入力してテーブル一覧を見てみます。
「goods」テーブルが出来ているのがわかります。
次に「describe goods;
」と入力してテーブルの中身を見てみます。
編集したとおりのテーブルがデータベースに出来上がりました。
Rails4.2では自動生成される「id」フィールドが「int」型でしたが、Rails6.0では「bigint」型になっています。
↓↓クリックして頂けると励みになります。