【未経験プログラミング】twitterクローン【xx日】
お気に入りを実装する。
1、likeモデル作成
2,モデルのアソシエーション、likedb作成
3,Routeing,コントローラー、view実装
Userは多くのお気に入りPostを持っています
Postを多くのお気に入り(By User)を持っています
中間テーブルを作る。
likeモデルを作成
2、モデルのアソシエーション
3つのモデルについて書きます。
like.rb
class Like < ApplicationRecord
belongs_to :user
belongs_to :micropost, class_name: 'User'
end
userとmicropostの1対多で属するので、2つ書く
user.rb
has_many :likes
has_many :micropostings, through: :likes, source: :micropost
micropostはlikeモデルを経由するのでhas_many ,thorough
イメージとしては、Userモデルのidが2番目の人のお気に入りをしているPostを取ってくる場合
Userモデル (id=2)
=> Likeモデル (user_id=2のものを探索)
=> Likeモデル (探索したものの、post_idを発見)
=> Postモデル(post_idからPostモデル内のidに変換。たどり着く)
いつものまにかmaicropostが削除できなくなっていた。
どうやらdependent: :destroyを記入しないとmysqlからデータが削除されないらしい。
foreign_key: 'follow_id', dependent: :destroy
has_many の流れをしっかり意識しないといつまでもはまる。
メソッドエラーとかあらゆるエラーを見た気がする。