【Rails】モデル(テーブル)の作成方法を分かりやすく解説!

Rails

Railsでモデル&テーブルを作成する方法(カラムを指定なし)

Railsでモデルを作成するには、以下のコマンドを実行します。また、テーブルのカラムを指定しない場合はモデル名だけを記述すれば大丈夫です。

$ rails generate model モデル名

$ rails g model モデル名  //  generateをgと略してもOK

また、この時指定するモデル名は先頭が大文字の単数型が一般的です。

ちなみに、Dockerで開発している場合は、以下のようにdocker-composeコマンドと組み合わせます。

$ docker-compose exec サービス名 rails g model モデル名

上記のモデル作成コマンドを実行すると、モデル名.rbマイグレーションファイルが作成されます。

テーブルを作るためには、この時作られたマイグレーションファイルにカラムの情報などを記述して、以下のコマンドを実行します。

$ rails db:migrate

$ docker-compose exec サービス名 rails db:migrate // dockerで開発している場合

ここまで実行したらDBにテーブルが作られます。

モデル名は単数形ですが、テーブル名は自動的に複数形となることに注意です。

実際にモデル・テーブルを作ってみる

今回は、生徒の情報を格納するテーブルを作成してみようと思います。

$ rails g model Student

上記のコマンドを実行すると、Studentモデルが作成されると同時に、いくつかファイルも作成されます。

カラムを指定せずにコマンドを実行すると、テーブルの情報が空っぽのマイグレーションファイルが作成されます。

class CreateStudents < ActiveRecord::Migration[6.1]
  def change
    create_table :students do |t|

      t.timestamps
    end
  end
end

では、このファイルにstudentsテーブルのカラムの情報などを追記します。

カラム名データ型
namestring
ageinteger
genderstring
addressstring

上記のカラム情報をマイグレーションファイルに反映させると、次のようになります。

class CreateStudents < ActiveRecord::Migration[6.1]
  def change
    create_table :students do |t|
      t.string :name
      t.integer :age
      t.string :gender
      t.string :address

      t.timestamps
    end
  end
end

そしたら次は、rails db:migrate を実行してマイグレーションファイルの内容をDBに反映させてあげます。

$ rails db:migrate
== 20220205042820 CreateStudents: migrating ===================================
-- create_table(:students)
   -> 0.1184s
== 20220205042820 CreateStudents: migrated (0.1187s) ==========================

以上で、データベース内にstudentsテーブルが新しく作られます。

GUIツールでDBの中を覗いてみると、しっかりstudentsテーブルが存在していることが確認できるはずです。

Railsでモデル&テーブルを作成する方法(カラムを指定あり)

モデル作成のコマンドを実行する際に、カラム名とカラムの型を同時に指定することができます。

$ rails generate model モデル名 カラム1:カラム1の型 カラム2:カラム2の型

$ rails g model モデル名 カラム1:カラム1の型 カラム2:カラム2の型z //  generateをgと略してもOK

実際にモデル・テーブルを作成する

それでは、以下のカラムを持つstudentsテーブルとStudentモデルを、カラム指定して作成してみたいと思います。

カラム名データ型
namestring
ageinteger
genderstring
addressstring

カラム指定してモデルを作成するには以下のように、モデル名の後にカラム名とカラムの型をそれぞれ指定して、コマンドを実行します。

$ rails g model Student name:string age:integer gender:string address:string

上記コマンドを実行すると、モデルのファイルやマイグレーションファイルが作成され、マイグレーションファイルには、以下のようにカラムの情報が書かれている状態となります。

class CreateStudents < ActiveRecord::Migration[6.1]
  def change
    create_table :students do |t|
      t.string :name
      t.integer :age
      t.string :gender
      t.string :address

      t.timestamps
    end
  end
end

あとは、以下のコマンドを実行するだけでstudentsテーブルが作成できます。

$ rails db:migrate

タイトルとURLをコピーしました