0
내가 3 개 모델이 있습니다 Feature
에서레일 중첩/멀티 레벨 AREL 쿼리
Tiersets
has_many Tiers
Tiers
belongs_to Tierset
has_and_belongs_to_many Features
Feature
has_and_belongs_to_many Tiers
을, 나는 다음과 같은 문자열 중 하나를 포함 Feature_Code
라는 String
열이 : "F_VIZ
", "F_DATA
", " F_SCORE
".
Tierset
내에서 찾는 쿼리를 만들려고 노력하는
Tierset
에 대한 모든
Tier
오브젝트 코드
F_VIZ
와 모든
Feature
개체를하고있다.
AREL 쿼리에 포함하는 조합을 여러 번 시도했지만 분명히 테이블이 결합되는 방식과 혼합되어 있습니다. 어떤 도움이라도 대단히 감사합니다.
AR 때문에, 조금 청소기입니다Feature.joins(:tiers).where(:code => 'F_VIZ', 'tiers.tierset_id' => 1)
가 사이의 암시 적 조인 테이블에 대해 '알고있다'
감사합니다. 필자는 'F_VIZ'를 직접 검색하지 않았기 때문에 약간 수정해야했지만 코드 이름에 'VIZ'가있는 레코드 (고유 한 레코드를 찾고 있으므로 끝에 .uniq가 추가됨) :' ("tiers.tierset_id"=> 1) .uniq' – tarunsachdeva
하나의 이상한 일이 일어나고 있습니다. 위의 쿼리에서'.count'는 실제로 고유하지 않은 모든 비 고유 항목의 수를 실제로 반환합니다. 내 db (Postgres)가 다른 방식으로 조인을 처리 중이기 때문에 이것이 맞는지 확실하지 않습니다. 임무가 중요하지 않고 내 응용 프로그램에 영향을 미치지 않습니다 ...하지만 이상합니다. – tarunsachdeva
'.count' 대신'.length'를 사용해야합니다. 전자는 Ruby에서 평가되고 후자는 데이터베이스에서 COUNT (*)로 평가됩니다. – bdon