7

Mam problemy z budowaniem powiązania, które jest zgodne z warunkami podanymi w has_many :through. Mam ten model:Szyny has_many: przez warunki i asocjacje budynku

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

Problem występuje, gdy próbuję utworzyć grupę z kontaktu. Z powyższej składni, otrzymuję błąd:

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

Ale kiedy należy użyć następującej składni to działa:

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> 

widzę odniesienie do dokładnej problemu w this question. Mówi się, że zgłoszony zostanie bilet na ten błąd (z powrotem w wersjach 3 wersji). Nie mogę znaleźć niczego na rails 3.0.x.

Używam wersji 3.0.8. Czy ktoś inny znalazł ten problem?

zauważa ponadto:

Ja również okazało się, że kiedy jestem grup budowlanych, to faktycznie ignoruje moje warunki w sprawie stowarzyszenia podczas budowy. Jedynym powodem, dla którego moja powyższa kompilacja miała wartość published => true, jest domyślna wartość w db.

To wygląda na regresję, czy ktoś inny może to zweryfikować?

+1

Czy to możliwe, masz na myśli: 'HAS_MANY: Duże: through =>: group_contacts,: conditions => {: grupy => {: opublikowane => true}}' ? – dwhalen

+0

oops, thx good find! – brad

Odpowiedz

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

lub

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

ah right ... jestem całkowicie przyzwyczajony do warunków na innych połączonych modelach, tj. ': Conditions => {: some_model => {: attr => true}}', ale domyślam się, że warunki są aktualne ' has_many', nie musisz go określać. dzięki – brad

Powiązane problemy