7

조건을 가진 has_many :through 인 연결을 구축하는 데 문제가 있습니다. 이 모델을 가지고 :레일 has_many : 조건 및 건물 연결을 통해

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의 기본값이기 때문입니다.

회귀와 비슷합니다. 다른 사람이이를 확인할 수 있습니까? `has_many :

+1

이 가능 당신이 의미 그룹을 =>를 통해 : group_contacts : 조건 => {: 그룹 => {: 발표 => TRUE}}' ? – dwhalen

+0

죄송합니다. 좋은 찾으세요! – brad

답변

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

또는

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

아 맞다 ... 나는 다른 조인 된 모델들, 즉'조건들 => {: some_model => {: attr => true}}'에 조건을 가지는데 익숙하다. has_many' 모델을 지정하지 않아도됩니다. 고마워 – brad