コントローラーを作りたいとき
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