2016-06-22 2 views
1

관련 속성의 존재를 확인하는 스코프를 작성하는 방법을 알아 내려고하고 있습니다. 내가 프로필라는 또 다른 모델이레일 4 - 스코프 작성 방법

scope :onboarded, -> { where ("user.profile_id IS NOT NULL AND user.profile.organisation_id IS NOT NULL") } 

:

내가 시도하려는 것의 요점은 내 사용자 모델의 범위이다. 협회는 다음과 같습니다 :

위의 범위는 내 사용자 모델에 기록됩니다. 그 게시물의 제안을 기반으로 그 Rails: Using service class methods in a scope query

내 프로필 모델에서 ID 또는 조직 ID가 있는지 확인한 다음 내 테스트를 시도해야하는지 잘 모르겠습니다. 또는 모델을 사용자 범위에서 함께 연결하여이를 테스트 할 수 있는지 여부를 테스트합니다.

답변

0

가장 쉬운 방법은 joins을 사용하는 것입니다. 내부 조인을 수행하기 때문입니다. 사용자가 이미 단순한 특성뿐만 아니라 기존 연결을 실제로 확인하기 때문입니다.

당신은 또한 profile 사이의 belongs_to 관계가 고려 organization 당신이 할 수 있습니다 :

scope :onboarded, -> { joins(profile: :organization) } 

이 조직이있는 프로파일, 모든 사용자를 반환합니다.

+0

대단히 감사합니다. – Mel