【未経験プログラミング】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 の流れをしっかり意識しないといつまでもはまる。

メソッドエラーとかあらゆるエラーを見た気がする。