Rails has_many: с условиями и строительными ассоциациями - PullRequest
7 голосов
/ 15 августа 2011

У меня проблемы с построением ассоциации, которая является 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>

Я вижу ссылку на точную проблему в этом вопросе . Говорят, что на эту ошибку будет подана заявка (еще в предварительных версиях 3). Я не могу найти что-либо, однако на rails 3.0.x.

Я использую 3.0.8. Кто-нибудь еще нашел эту проблему?

Дополнительные примечания :

Я также обнаружил, что когда я строю группы, он фактически игнорирует мои условия в ассоциации при построении. Единственная причина, по которой моя сборка была published => true, заключается в том, что она по умолчанию в БД.

Это похоже на регрессию, может кто-нибудь еще проверить это?

1 Ответ

9 голосов
/ 18 августа 2011
has_many :groups, :through => :group_contacts, :conditions => {:published => true}

или

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