【Rails】コントローラー系とモデル系の作成コマンドと書き方 総まとめ
コントローラー系とモデル系の作成コマンドと書き方に関して、日頃自分が知りたいと思い都度ググっている情報を全部まとめた。(オプション系は省略)似たような誰かのためにもなったら嬉しい。
コントローラー系
コントローラーとビューの作成
$ rails g controller コントローラー名(複数形) アクション名
サンプル
$ rails g controller Tweets index
生成されるもの
- controllers内に tweets_controller.rb
- views内に tweetsフォルダ
- views内のtweetsフォルダ内に index.html.erb
コントローラーのみ作成
なし
モデル系
モデルとマイグレーションファイルの作成
$ rails g model モデル名(単数形) カラム名:データ型
※カラムを複数作る時でもカンマは不要。
サンプル
$ rails g model Tweet user_id:integer tweet:text
生成されるもの
- models内に tweet.rb
- db/migrate内に YYYYMMDDHHMMSS_create_tweets.rb
マイグレーションファイルのみ作成
$ rails g migration Addカラム名Toテーブル名 カラム名:データ型
※カラム削除の場合はRemoveカラム名Fromテーブル名
とする。他にもRenameとか色々あるけど個人的にはあまり使わないので割愛。
※カラムを複数作る時でもカンマは不要。
サンプル
$ rails g migration AddTitleToTweets title:string
生成されるもの
- db/migrate/内に YYYYMMDDHHMMSS_add_title_to_tweets.rb
マイグレーションファイルの中身/書き方
新規テーブル作成
class モデルクラス名 < ActiveRecord::Migration def change create_table :テーブル名 do |t| t.データ型 :カラム名, null: nullを許可するかどうか(true or false), default: デフォルト値, comment: 'コメント' t.timestamps end end end
サンプル
class CreateLikes < ActiveRecord::Migration def change create_table :likes do |t| t.integer :tweet_id, null: false, default: 0, comment: 'いいねされたツイートのID' t.integer :user_id, null: false, default: 0, comment: 'いいねしたユーザーのID' t.timestamps end end end
カラム追加
class モデルクラス名 < ActiveRecord::Migration def change add_column :テーブル名, :追加したいカラム名, :データ型, after: :どのカラムの後に追加するか, null: nullを許可するかどうか(true or false), default: デフォルト値, comment: 'コメント' end end
サンプル
class AddTitleToTweets < ActiveRecord::Migration def change add_column :tweets, :title, :string, after: :tweet, null: false, default: '', comment: 'ツイートのタイトル' end end
カラム削除
class モデルクラス名 < ActiveRecord::Migration def change remove_column :テーブル名, :削除したいカラム名, :データ型 end end
サンプル
class RemoveTitleFromTweets < ActiveRecord::Migration def change remove_column :tweets, :title, :string end end
マイグレーション実行
$ rails db:migrate