2017-03-24 3 views
0

관계 속성에 의해 그룹 :액티브 : 나는이 개 모델이

Characteristic 
    name 

Value 
characteristic_id 
name 

과 가치 belongs_to 특성, 특성 has_many

내가 키와와 값으로 characteristics'names을 반환하는 쿼리를하고 싶습니다 이 특성에 관련된 값 이름 : I 조인 선택을 사용하여 많은 쿼리를 시도했지만이 작품을 만들 수 없습니다

{characteristic_1_name: [value_associated_1.name, value_associated_2.name], characteristic_2_name: [value_associated_3.name, value_associated_4.name]} 

.

어떻게하면 루비의 방법 (느린지도 등)을 사용하지 않고도이 결과를 얻을 수 있습니까?

당신은 내가이 액티브와 달성 생각하지 않는다, arel_table 조회 PostgreSQL을

ActiveRecord::Base.connection.execute(
    WITH characteristics_arr AS 
     (SELECT characteristics.name AS name, 
       array_agg(
         values.id) AS arr 
     FROM CHARACTERISTICS 
     INNER JOIN 
     VALUES ON characteristics.id = 
     VALUES.characteristic_id 
     GROUP BY characteristics.name) 
    SELECT json_object_agg(name, arr) 
    FROM characteristics_arr 
) 
+0

를 사용하는 경우 모든 입력이 훨씬 – user3033467

답변

2

을 이해할 수있을 것이다