【发布时间】:2010-02-16 12:34:54
【问题描述】:
当我在使用 find_by_sql 的查询中使用列别名时,它似乎没有在结果对象中设置,即使我为属性添加了 attr_accessor。
class Country < ActiveRecord::Base
attr_accessor :average_score
def self.sorted_by_average_score
sql = "SELECT country_id, AVG(score) AS average_score, countries.name " +
"FROM players " +
"INNER JOIN countries ON players.country_id = countries.id " +
"GROUP BY country_id "
Country.find_by_sql(sql)
end
end
我希望能够做到这一点:
countries = Country.sorted_by_average_score.first.average_score
...但它总是返回 nil,即使从查询中肯定返回了一个值。
谁能解释一下为什么对象中没有设置属性?
【问题讨论】:
标签: sql ruby-on-rails activerecord