2012-03-02 11 views
6

を通じて、私は好きのためのユーザーのリストを取得するにはどうすればよい複数にhas_many:オブジェクトモデルで

has_many :likes 
has_many :hates 
has_many :users, :through => :likes 
has_many :users, :through => :hates 

はありますか?例えば。 object.users < ---好き嫌いでどのように指定すればいいですか?

答えて

6

これらの2つの異なる関連付けに異なる名前を付ける必要があります。

has_many :likes 
has_many :hates 
has_many :likers, :through => :likes, :source => :user 
has_many :haters, :through => :hates, :source => :user 
+0

。] ':class_name'、':primary_key'、 ':foreign_key' **のオプションはアソシエーションがソースリフレクションを使用するので無視されます。 - それで、 ':class_name'は何もしません。そうでしょうか? – fanaugen

+0

あなたが正しいと思いますが、ソースアソシエーションを参照するドキュメンテーションに準拠するようにサンプルを更新しました。そこから、それがUserオブジェクトであると推測できます。 –

+0

':source =>:user'は':source =>:users'でなければなりません。 –

0

についてあなたが好きなことを何をすることができます。

has_many :user_likes, :through => :likes, :class_name => 'User' 
1

私があまりにもソースを追加する必要があるようです。そうでなければ、Railsは好き嫌いを探しています。 「`::through`は、クエリを実行するを通じて関連付けを指定します[..。あまりにも、私が考えたものだが、(ActiveRecordは::協会::クラスメソッドで)` has_many`のドキュメントは言う

has_many :likes 
has_many :hates 
has_many :likers, :through => :likes, :class_name => 'User', :source => 'user' 
has_many :haters, :through => :hates, :class_name => 'User', :source => 'user' 
関連する問題