Chà, điều này thật đơn giản. Sử dụng .first
là vấn đề. Tôi cho rằng điều này là do không có bản ghi mô hình nào được trả về bởi truy vấn. Nếu tôi giải quyết trực tiếp chỉ số 0 của kết quả, tôi sẽ nhận được tất cả điểm số của mình.
vì vậy mã này hoạt động:
query =
Assessment.rating_attributes.collect{|attribute|
1.upto(5).collect do |i|
%Q{sum(CASE WHEN #{attribute.to_s} = #{i} then 1 else 0 end) as #{attribute}_score_#{i}}
end
}.join(', ')
Assessment.where(selection_attribute: 1038).select(query)[0]
=> #<Assessment id: nil>
Assessment.where(selection_attribute: 1038).select(query)[0].first_attribute_score_1
=> 3