Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
131
Help us understand the problem. What is going on with this article?

More than 1 year has passed since last update.

@higeaaa

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

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

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
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
131
Help us understand the problem. What is going on with this article?