웹 애플 리케이션, Postgresql 데이터베이스, squeel gem에서 Rails 4를 사용하고 있습니다.Rails의 열 함수로 평균 쿼리하기
내 모델 statistic.rb
def properties_mean_ppm(mode, rooms, type, output_currency_id)
sql_result = properties(mode, rooms, type).select{
avg(price_dolar/property_area).as(prom)
}
avg = sql_result[0].prom
final_avg = change_currency(avg, DOLAR_ID, output_currency_id)
return final_avg.to_f
end
price_dolar 및 property_area이 기능이는 특성 테이블에서 열입니다. 은 레일 콘솔에서 잘 작동하고 결과를 표시합니다,하지만 난 컨트롤러에서 사용할 때 오류 제공 : 라인
avg = sql_result.to_a[0].prom
나는 또한 sql_result [0을 사용하여 시도를
ActiveModel::MissingAttributeError (missing attribute: id)
을 그리고 표시 ] .prom 또는 sql_result.take 또는 sql_result.first는 모두 동일한 오류가 발생합니다. sql_result은 이것이다 :
#<ActiveRecord::Relation [#<Property >]>
이것은
def properties_mean_ppm
@statistic = Statistic.find(params[:id])
mode = params[:mode] ? params[:mode] : ANY_MODE
type = params[:type] ? params[:type] : ANY_TYPE
one_room = @statistic.properties_mean_ppm(mode, 1, type, UF)
end
내가 액티브하지 않고 단지 SQL을 사용하여 결과를 얻을 수 있지만 나를 위해 매우 비효율적 방법을 알고 컨트롤러에서 호출 된 작업입니다 I 때문에 이전에 properties() 함수에서 호출 한 많은 필터가 있습니다.