我在构建具有条件的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中的默认值。
这似乎是回归,其他任何人都可以验证这个吗?
答案 0 :(得分:9)
has_many :groups, :through => :group_contacts, :conditions => {:published => true}
或
has_many :groups, :through => :group_contacts, :conditions => {"groups.published" => true}