자주 실행되는 검색어 (예 : 오류가있는 사용자)의 범위를 만들려고합니다. 문제는 사용자 및 계정 테이블에 가입 한 다음 계정 테이블에서 메서드를 실행하여 어떤 사용자에게 오류가 있는지 찾아야한다는 것입니다. 즉, 오류가있는 계정이있는 사용자를 찾아야합니다. 이 같은 계정 모델에이 범위를 만들 수 있어요 :Rails에서 조인 된 테이블의 메소드를 호출하려면 어떻게해야합니까?
scope :with_errors -> {joins(:user).map(&:status).select{|status| status['code'] == :error}}
문제가
, 나는 그때로부터 반환되는 액티브 :: 관계에 map(&:status)
을 실행할 수 있기 때문에 계정에이 범위를 정의해야 조인 그래서, 내 질문은 : 그것은 내 사용자 모델에서이 범위를 정의 할 수 있도록 "조인 된"테이블에 메서드를 실행할 수 있습니까?
감사합니다.
'status' *는 * 메소드가 될 수 있습니까? 예를 들어 데이터베이스 쿼리를 사용할 수 있다면 훨씬 쉽고 빠릅니다. Account.where (: status_code => 'error') –
아쉽게도 '상태'는 메소드 여야합니다. postgres에'user'를 저장하고 cassandra에'status'를 저장합니다. 그래서 나는 훌륭한 레일 헬퍼를 모두 이용하지 않습니다. 감사! – spinlock