更新日:
【Rails】 rails g model コマンドでモデルを作成しよう!
rails g modelコマンドとは、Ruby on Railsでモデルを作成するときに使うコマンドです。
1
$ rails g model モデル名
例えば、Articleモデルを作成するときのコマンドは下記のようになります。
1
$ rails g model Article
g
はgenerate
の略でrails generate model
も同じコマンドになります。
rails g modelコマンド
この章では、rails g model
コマンドだけではなく、コマンドを実行したことによって生成されるファイルなどについても解説します。
モデルとは
モデルとはMVCの「M」に当たる部分で、データベースとのやり取りを担当する役割を持っています。
モデルはコントローラーからの指示に従ってデータベースから必要なデータを取得してコントローラーへ返します。
データの取得だけではなく、データの更新や削除をします。
また、データの検証(バリデーション)やテーブルとの関連付け(アソシエーション)などもモデルが担当します。
作成されるファイル
このコマンドによりモデルファイルとそのモデルが担当するテーブルを作成するためのマイグレーションファイルが自動で作成されます。
1
2
3
4
5
6
7
Running via Spring preloader in process 55415
invoke active_record
create db/migrate/20190101010101_create_articles.rb #マイグレーションファイル
create app/models/article.rb #モデルファイル
invoke test_unit
create test/models/article_test.rb
create test/fixtures/articles.yml
以上のようなファイルがこのコマンドにより作成されます。
カラムの追加
rails g model モデル名
の後に下記のように記述すると作成されるマイグレーションファイルにカラムを追加するコードが自動で書かれた状態でマイグレーションファイルが作成されます。
1
2
3
4
$ rails g model モデル名 カラム名:カラムの型
# 複数のカラムも追加が可能
$ rails g model モデル名 カラム名:カラムの型 カラム名:カラムの型
例えば下記のようなコマンドを打つとします。
1
$ rails g model Article text:text name:string
すると下記のようなマイグレーションファイルが作成されます。
1
2
3
4
5
6
7
8
9
10
class CreateArticles < ActiveRecord::Migration[5.2]
def change
create_table :articles do |t|
t.text :text
t.string :name
t.timestamps
end
end
end
カラムの型を書かずにカラム名だけで指定すると全てstring型になります。
1
2
# カラム名だけ記述
$ rails g model Article name
このときは下記のマイグレーションファイルが作成されます。
1
2
3
4
5
6
7
8
9
class CreateArticles < ActiveRecord::Migration[5.2]
def change
create_table :articles do |t|
t.string :name
t.timestamps
end
end
end
一意制約の追加
rails g model モデル名
の後に下記のように記述すると作成されるマイグレーションファイルにカラムを追加するコードとindex、一意制約が自動で書かれた状態でマイグレーションファイルが作成されます。
1
$ rails g model モデル名 カラム名:カラムの型:uniq
例えば下記のコマンドを入力したとします。
1
$ rails g model Article text:text:uniq
このとき下記のマイグレーションファイルが作成されます。
1
2
3
4
5
6
7
8
9
10
class CreateTweets < ActiveRecord::Migration[5.2]
def change
create_table :tweets do |t|
t.text :text
t.timestamps
end
add_index :tweets, :text, unique: true
end
end
モデルの命名規則
モデルはクラスとして作成するので大文字で始まる単数形の名前にします。
モデルに関連するコントローラーとテーブルの名前は下記の規約に基づいて命名します。
種類 | 名前 | 例 |
---|---|---|
モデル名 | 大文字から始まる単数形 | Tweet |
コントローラー名 | 小文字から始まる複数形 | tweets |
テーブル名 | 小文字から始まる複数形 | tweets |
これはrailsの規約で決まっているので、必ずこの名前にしましょう。
作成したモデルを消去する方法
間違って作成してしまったモデルは下記のコマンドにより消去することができます。
1
$ rails d model モデル名
d
はdestroy
の略でrails destroy model
でも同じコマンドになります。このコマンドにより、rails g model モデル名
コマンドによって作成された全ファイルが削除されます。
手動でも削除できますが、このコマンドで削除する方が確実です。他にもrailsコマンドについて深く知りたいという方は、こちらの書籍で学んでみましょう。
この記事のまとめ
- rails g modelコマンドは、モデルを作成するコマンドのこと
- モデルの他にそのモデルが担当するテーブルを作成するためのマイグレーションファイルも作成される
- rails d modelコマンドで作成したモデルを削除することができる