2011-11-25 5 views
0

이것은 아마도 매우 쉽게 풀 수있는 문제이지만 두 모델의 데이터를 가져 오는 쿼리가 있습니다. 이 쿼리에서보고 싶은 유일한 것은 배열의 평균 (각 문자열 끝에있는 숫자)입니다. 그러나, 출력은 현재 다음과 같습니다레일 3 배열 출력

[545625.5, 534927.0, 524438.5, 514155.5] 

코드는 다음과 같습니다 :

<%= Quarter.includes(:client).group('clients.specialty', 'quarters.year','quarters.quarter').limit(4) 
.order('quarters.created_at DESC').average('quarters.collections').to_json %> 

어떻게해야

{"[\"Orthodontist\", 2011, 4]":"545625.5","[\"Orthodontist\", 2011, 3]":"534927.0","[\"Orthodontist\", 2011, 2]":"524438.5","[\"Orthodontist\", 2011, 1]":"514155.5"} 

내가 배열은 다음과 같이하고 싶어?

답변

1

to_json 전에 values

<%= Quarter.includes(:client).group('clients.specialty', 'quarters.year','quarters.quarter').limit(4) 
.order('quarters.created_at DESC').average('quarters.collections').values.to_json %> 
+0

오 남자를 추가, 감사합니다! 그것은 내가 필요한 것입니다. 전에 ".values"를 사용하지 않았습니다. 이제 결과는 다음과 같습니다 : [ "545625.5", "534927.0", "524438.5", "514155.5"] 마크를 없앨 방법이 있습니까? – FattRyan

+2

float으로 원한다면'.values' 다음에'.map (& : to_f)'를 추가 할 수 있습니다 .. – rubyprince

+1

@FattRyan .. 쿼리는 기본적으로 해시를 반환합니다 ..'.values'는 해시의 값을 제공합니다 배열 – rubyprince