2012-10-20 2 views
1

주요 리펙토링 옵션이없는 몇 가지 예전 코드로 작업하고 있습니다. 다음 코드 줄은 다음과 같습니다.레일 3 : 조인 문에서 스코프 사용

Address.joins(:contact => :user).where('users.organization_id = ?', session[:org_id]) 

주소 목록이 생성됩니다. 주소는 연락처 테이블에 연결되고, 연락처 테이블은 사용자 테이블에 연결됩니다.

특정 범위 내의 특정 사용자 (예 : User.active 또는 User.inactive) 만 참여하는 방법이 필요합니다.

데이터베이스에서 주요 리펙터없이이 작업을 수행 할 수있는 방법이 있습니까?

답변

1

사용자 테이블에 사용자가 활성화되어 있는지 여부를 나타내는 부울 속성이 있다고 가정하면 데이터베이스에 아무 것도 할 필요가 없습니다. 사용자 모델의 범위를 다음과 같이 정의합니다. (: 주소 => : 연락처) 어디에요 ('users.organization_id =?'세션 [: 어쩌구 저쩌구] ')

당신이 아닌 경우

User.active.joins 아래 줄을 실행 데이터베이스에 부울 속성이 있으면 사용자가 활성 상태인지 아닌지를 확인하기 위해 다양한 속성에서 작동하는 특정 메커니즘을 고안해야합니다.