7

Tôi gặp sự cố khi xây dựng liên kết là has_many :through với điều kiện. Tôi có mô hình này:Rails has_many: thông qua các điều kiện và liên kết xây dựng

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

sự cố xảy ra khi tôi cố gắng khởi tạo nhóm từ một liên hệ. Với cú pháp trên, tôi nhận được một lỗi:

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

Nhưng khi tôi sử dụng cú pháp sau nó hoạt động:

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> 

tôi thấy một tham chiếu đến các vấn đề chính xác trong this question. Người ta nói rằng một tấm vé sẽ được đệ trình cho lỗi này (trở lại trong bản tiền tố 3 phiên bản). Tôi không thể tìm thấy bất cứ điều gì tuy nhiên trên rails 3.0.x.

Tôi đang sử dụng 3.0.8. Có ai khác tìm thấy vấn đề này không?

Ghi chú Hơn nữa:

Tôi cũng đã phát hiện ra rằng khi tôi đang xây dựng nhóm, nó thực sự bỏ qua điều kiện của tôi trên hiệp hội khi xây dựng. Lý do duy nhất của tôi ở trên xây dựng có published => true là bởi vì nó là mặc định trong db.

Điều này có vẻ giống như hồi quy, bất kỳ ai khác có thể xác minh điều này không?

+1

Có thể bạn có nghĩa là: 'has_many: nhóm,: thông qua =>: group_contacts,: conditions => {: nhóm => {: công bố => true}}' ? – dwhalen

+0

oops, thx tốt! – brad

Trả lời

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

hoặc

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

ah đúng ... tôi hoàn toàn được sử dụng để có điều kiện trên các mô hình khác tham gia tức là ': điều kiện => {: some_model => {: attr => true}}', nhưng tôi đoán khi các điều kiện trên thực tế ' has_many' mô hình, bạn không cần phải xác định nó. cám ơn – brad

Các vấn đề liên quan