すでにメンバーの場合は

無料会員登録

GitHubアカウントで登録 Pikawakaが許可なくTwitterやFacebookに投稿することはありません。

登録がまだの方はこちらから

Pikawakaにログイン

GitHubアカウントでログイン Pikawakaが許可なくTwitterやFacebookに投稿することはありません。

Rails

【Rails】 rails g model コマンドでモデルを作成しよう!

ぴっかちゃん
ぴっかちゃん

rails g modelコマンドとは、Ruby on Railsでモデルを作成するときに使うコマンドです。

rails g modelの使い方
1
$ rails g model モデル名

例えば、Articleモデルを作成するときのコマンドは下記のようになります。

ターミナル | Articleモデルを作成する場合
1
$ rails g model Article

ggenerateの略で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 モデル名

ddestroyの略でrails destroy modelでも同じコマンドになります。このコマンドにより、rails g model モデル名コマンドによって作成された全ファイルが削除されます。

手動でも削除できますが、このコマンドで削除する方が確実です。他にもrailsコマンドについて深く知りたいという方は、こちらの書籍で学んでみましょう。

この記事のまとめ

  • rails g modelコマンドは、モデルを作成するコマンドのこと
  • モデルの他にそのモデルが担当するテーブルを作成するためのマイグレーションファイルも作成される
  • rails d modelコマンドで作成したモデルを削除することができる