表題の件について理解を確認させてください。
確認したいこと
現在、多対多のアソシエーションを学んでいます。今回は、follow機能を実装しながら、それを学んでいますが、 以下の理解ができていませんので、確認させてください。
確認したいmodelのコード(フォロー機能を想定しています。)
# 自分がフォローした人を取り出す。 has_many :active_relationships,class_name: "Relationship", foreign_key: "follower_id", dependent: :destroy has_many :followings, through: :active_relationships, source: :following # 自分のfollowerを取り出す。 has_many :passive_relationships,class_name: "Relationship", foreign_key: "following_id", dependent: :destroy has_many :followers, through: :passive_relationships, source: :follower
特に確認したい点は、has_many:@@@で、今回テーブル名でもないactive_relationshipsと
passive_relationshipsを設定している点です。これまで、1対多のアソシエーションの場合は、モデル同士の
関連付けをしており、@@@の部分にはモデル名を指定してきました。今回は、Relationshipモデルを作っており、
便宜上、active_relationshipsとpassive_relationshipsを設定しているように見受けられますが、
これは、カラムでも作成していないものです。
多対多のアソシエーションを理解する場合は、このように便宜上、擬似カラムのようなものを作成し、それを通して
(through: :active_relationship)任意の設定(followings/followers)をするのが一般的なのでしょうか?
この部分を解説してあるサイトなど見つけることができず、また、悶々としているので、理解をはっきりさせたいと考え、質問する次第です。
以上、よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/02 04:34
2018/01/05 03:09