2016-12-06 4 views
3

여기에 대한 답을 찾으려하고 있습니다.레일 5 동적 조건 has_many에 대한

has_one :region_location, ->(location) { where("region_locations.site_id = ?", location.current_site.id) if location.current_site } 

이 코드는 내 개발 환경에서 다음 예외를 생성합니다.

"는 연관 스코프 region_location '는 가 지원되지 않는 경우 종속 범위 예압.합니다 ( 범위 블록 인수 소요) 종속 인스턴스이다."

레일 4에서 가능했지만 5 (Rails has_many with dynamic conditions)에서 가능하지 않은 것 같습니다. 어떤 제안이라도 대단히 감사하겠습니다. 대신 인스턴스 메서드로 만들려고 생각했지만 아래의 연관도 사용합니다.

has_one :region, :through => :region_location 

답변

0

대신 인스턴스 메소드로 설정할 수 있습니다. 예 :

def region_location 
    RegionLocation.find_by_site_id(self.current_site.id) if self.current_site 
end 

와 두 번째 부분은 동일한 기능을

+0

감사를 유지하면서이 문제를 해결해야

delegate :region, to: :region_location, allow_nil: true 

수 있습니다. 이것은 작동하는 것 같습니다. 분명히 일을 늦추지 만, 태양 흑점 solr을 통해 나는 할 수 없다. 이런 식으로 정의 된 관계를 더 이상 포함하지 않기 때문이다. –

+0

@BenScheib 흠 좀 거칠다. 해결책을 찾기 위해 레일 소스를 파헤쳐 야 할 수도 있습니다. – engineersmnky