学生向けプログラミング入門

学生向けにプログラミングを解説。Java、C++、Ruby、PHP、データベース、Ruby on Rails

Ruby on Rails 6.0によるWebアプリケーション開発11 scaffoldの生成

<<前  [TOP]  次>>


商品を格納するテーブルを作成します。
テーブルの名前は必ず複数形にするのがルールです。
この後実際にRubyでコードを書いていくモデルクラスというものが登場しますが、そのモデルクラスの名前は単数形で最初の文字は大文字というルールがあります。
このようにルール通り名前をつけておくと、モデルクラスでわざわざテーブル名を指定しなくてもRailsが自動的にテーブルを探し出すことが出来ます。


では商品のテーブルを作成してみましょう。
「goods」という単語を使い、モデル名は「good」となります。


作成するフィールドの内容は次のようにします。

  • goods_id: 商品のID用。integer型
  • title: 商品の名前。string型
  • description: 商品の説明用。text型
  • image_url: 商品の画像URL用。string 型
  • price: 商品の価格。decimal型
  • date: 商品の登録日。datetime型
  • maker: 商品の製造業者。string型
  • category: 商品のカテゴリー分類用。string型


    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」と入力します。
    これでアプリケーションに必要なモデルやビューなどが作成されます。

    scaffoldの生成
    scaffoldの生成


    では「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;」と入力してテーブルの中身を見てみます。
    goodsテーブル
    goodsテーブル


    編集したとおりのテーブルがデータベースに出来上がりました。
    Rails4.2では自動生成される「id」フィールドが「int」型でしたが、Rails6.0では「bigint」型になっています。


    <<前  [TOP]  次>>