2012-06-23 3 views
0

나는 다음과 같은 has_one 설정이있는 경우 :활성 레코드 - has_one 모델의 조건은?

class Account 
has_one :user 

을 어떻게 @ account.user.where처럼 뭔가를 할 수 있습니다 (: 볼 => TRUE)

또는 더 구체적으로는, 어떻게 조건에 부르죠 has_one 관계와 비슷한 방식으로 has_one 관계를? 어리석은 사용자의 범위를 사용하고 있습니까?

def is_visible? 
    if self.visible 
    return self 
    else 
    return false 
end 
+0

잘 모르겠습니다. 사용자가 보이는 계정 목록을 원하십니까? – x1a4

+0

Disco. 그래 그거야. 하지만 @ account.user.where (: visible => true)를 호출 할 수없는 것 같습니다. 이유가 확실하지 않습니다. – Galaxy

+0

이 조건을 모든 연결에 적용 하시겠습니까? – Nobita

답변

1

표시 할 사용자 계정 목록을 가져 오려면 조인을 사용해야하지만 쿼리를 실행하면 너무 어렵지 않습니다. 이것을 시도하십시오 :

@accounts = Account.joins(:user).where(:users => {:visible => true}) 

쉽게 범위로 캡슐화 할 수도 있습니다.

scope :with_visible_user, joins(:user).where(:users => {:visible => true}) 

@accounts = Account.with_visible_user