7

条件付きのhas_many :throughの関連付けを構築する際に問題が発生しています。私はこのモデルを持っています:Rails has_many:through条件と建物の関連付け

class Contact < AR 
    has_many :group_contacts 
    has_many :groups, :through => :group_contacts, :conditions => {:groups => {:published => true}} 
end 

連絡先からグループをインスタンス化しようとすると問題が発生します。上記の構文で、私はエラーを取得:

contact.groups.build 
=> ActiveRecord::UnknownAttributeError: unknown attribute: groups 

をしかし、私は次の構文を使用する場合、それは動作します:

has_many :groups, :through => :group_contacts, :conditions => ['groups.published = ?', true] 

contact.groups.build 
=> #<Group id: nil, name: nil, description: nil, created_at: nil, updated_at: nil, published: true> 

私はthis questionでの正確な問題への参照を参照してください。チケットはこのバグのために提出されると言われています(3つのバージョンのプレリリース)。しかし、私はrails 3.0.xで何も見つけることができません。

私は3.0.8を使用しています。他の誰かがこの問題を発見しましたか?

さらに注記

また、私はグループを構築していたときに構築するとき、それは実際に関連に私の条件を無視していることがわかりました。私の上のビルドpublished => trueを持っていた唯一の理由は、dbのデフォルトだからです。

これは回帰のようですが、他の誰かがこれを確認できますか?

+1

それは可能です、あなたは意味: 'has_manyの:グループ、:group_contacts、::条件=> {:グループ=> {:公表=>真}}' =>スルー? – dwhalen

+0

おっと、thx good find! – brad

答えて

9
has_many :groups, :through => :group_contacts, :conditions => {:published => true} 

または

has_many :groups, :through => :group_contacts, :conditions => {"groups.published" => true} 
+0

ああ...私は、他の結合されたモデル、すなわち ':conditions => {:some_model => {:attr => true}}'の条件を持つことに完全に慣れていますが、 has_many'モデルでは、指定する必要はありません。どうも – brad

関連する問題