当我在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
Run Code Online (Sandbox Code Playgroud)
我希望能够做到这一点:
countries = Country.sorted_by_average_score.first.average_score
Run Code Online (Sandbox Code Playgroud)
...但它总是返回nil,即使从查询中确实返回了一个值.
任何人都可以向我解释为什么没有在对象中设置属性?