LoginSignup
149
142

More than 3 years have passed since last update.

Rails generate の使い方とコントローラーやモデルの命名規則

Last updated at Posted at 2016-01-07

コントローラーを作りたいとき

rails generate controller <コントローラー名> <アクション名>

コントローラー名は複数形で、頭文字を大文字にする。
newアクションを持つUsersコントローラーを作るときは次のように入力する。

command
$ rails generate controller Users new

モデルを作りたいとき

rails generate model <モデル名> <カラム名:型>

モデル名は単数形で、頭文字を大文字にする。
name、emailの2つの項目を持つUserモデルを作るとき。

command
$ rails generate model User name:string email:string

rails generate model Userによって作られたマイグレーションファイルは次の通り。
テーブル名はUsers複数形になる。

[timestamp]_create_users.rb
class CreateUsers < ActiveRecord::Migration
  def change
    create_table :users do |t|
      t.string :name
      t.string :email

      t.timestamps null: false
    end
  end
end

マイグレーションファイルを適用したいとき

command
$ bundle exec rake db:migrate

適用したマイグレーションの取り消すしたいとき

command
$ bundle exec rake db:rollback

存在するテーブルのカラムにインデックスを追加するとき

以下の例は、usersテーブルのemailカラムにインデックスを追加する場合の流れです。

手順1.インデックス追加用のマイグレーションファイルを作成する

rails generate migration <マイグレーションファイル名>

command
$ rails generate migration add_index_to_users_email
[timestamp]_add_index_to_users_email.rb
class AddIndexToUsersEmail < ActiveRecord::Migration
end

手順2.作成されたマイグレーションファイルにインデックスを定義する

[timestamp]_add_index_to_users_email.rb
class AddIndexToUsersEmail < ActiveRecord::Migration
  def change
    add_index :users, :email, unique: true
  end
end

unique: trueはインデックスに対して一意性を強制するオプション。オプションをつけなければインデックス自体の一意性は強制されない。

手順3.インデックスを定義したマイグレーションファイルを適用する

command
$ bundle exec rake db:migrate

存在するテーブルにカラムを追加したいとき

以下の例は、usersテーブルにpassword_digestというカラムを追加するときです。

手順1.インデックス追加用のマイグレーションファイルを作成する

rails generate migration <マイグレーションファイル名> <追加するカラム名:型>

command
$ rails generate migration add_password_digest_to_users password_digest:string

作成されたマイグレーションファイル

[timestamp]_add_password_digest_to_users.rb
class AddPasswordDigestToUsers < ActiveRecord::Migration
  def change
    add_column :users, :password_digest, :string
  end
end

手順2.作成されたマイグレーションファイルを適用する

command
$ bundle exec rake db:migrate
149
142
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
149
142