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テーブルのカラムの情報などを追記します。
カラム名 | データ型 |
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
そしたら次は、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モデルを、カラム指定して作成してみたいと思います。
カラム名 | データ型 |
name | string |
age | integer |
gender | string |
address | string |
カラム指定してモデルを作成するには以下のように、モデル名の後にカラム名とカラムの型をそれぞれ指定して、コマンドを実行します。
$ 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