Userモデルに紐付くModelの作り方
かなり基本の部類に入るとは思うがUserモデルに紐づくModel
(例えばPostだったりTaskだったりTweetだったりする)
の作り方を確認してみる
Modelの生成
まずはgenerate(カラムはお好み)
$ rails g Model Post title:string content:text user:references
user:referencesをつけることでmigrationファイルに
t.references :user, foreign_key: true
が追記されます。
さらにmodels/post.rbに
belongs_to :user
が追記されています。
userテーブルに対して外部キーが設定されますのでPostとUserの整合性が保たれます。
また、下記のようにインデックスを貼っておくのが定石のようです。
#user_idとcreated_atに対してインデックスを追加 add_index :posts, [:user_id, :created_at]
Migrationとmodels/user.rbの編集
そしてmigration
$ rails db:migrate
またuser.rb側でも関連付けを行います。
(dependent: :destoryは親を削除した時に関連する子も削除する設定)
has_many :posts, dependent: :destroy
これによりUserのインスタンスからPostモデルにアクセスできるようになりましたので
user_controllerでは関連付けを利用してモデルへアクセスしましょう。