2016-05-15 9 views
0

を考える会:、カスタマイズにhas_manyの関連を理解する

has_many :followers, through: :follows_as_fallowable, 
source: :user 

それは、特定のユーザーに従うユーザーインスタンスを返します。しかし、私が深く掘り下げ始めたとき、なぜこの関連付け(user.followers)がUserオブジェクトを返すのかを完全には理解していないことに気付きました。
何に基づいてですか?私はそれがassociationまたはclass_nameハッシュ引数の名前で推論できることを知っていますが、これらのどちらも実際にはこの場合問題ではありません。 私はフォロワーモデルがなく、私はclass_name属性を提供していません。 ソースパラメータは、結合表のユーザー列で検索する必要があると言うだけです。
これで、RailsはUsersテーブルから選択する必要があることをどのように知っていますか?

EDIT:
follow_as_followableは、Userモデル内の別の団体です:

has_many :follows_as_fallowable, class_name: 'Follow', as: :followable 

答えて

0

Railsは:userある:sourceで指定された関連名を使用して、follows_as_fallowable関係を通じてユーザーの知識を拾うことになる(例えばUserモデル)。

follows_as_fallowableを含むモデルにはbelongs_to :userの関係が定義されているため、ナビゲートする関係を指定するのにsource: :userを使用する可能性があります。

Active Record AssociationsThe has_many :through Associationセクションで詳細を確認できます。

+0

他のアソシエーションは、別のアソシエーションです(編集を参照)。 – avest

関連する問題