问题描述
|
以下查询应该可以,但是不能使用。
class Keyword
def self.popular_queries
t = Time.Now
relation = Keyword.where(:created_at => (t.beginning_of_day..t.end_of_day))
relation = relation.group(:name)
relation = relation.select(\"name,COUNT(id) AS count_value\")
relation.to_a
end
end
结果跟随无计数值
[#<Keyword name: \"a\">,#<Keyword name: \"b\">,#<Keyword name: \"c\">,#<Keyword name: \"d\">]
关键字表只有两列name
和id。
解决方法是
def self.popular
t = Time.Now
relation = Keyword.where(:created_at => (t.beginning_of_day..t.end_of_day))
relation = relation.group(:name)
relation = relation.select(\"name,created_at,count(*) as c1\")
sql = relation.to_sql
self.connection.select_all(sql)
end
解决方法
问题在于您的
Keyword
模型不知道count_value
是什么,并且您正在基于SQL查询实例化一堆Keyword
实例。创建您的实例时,他们在处理的数据中看到“ 5”,但是由于没有“ 5”属性而忽略了它们。
如果要运行任意SQL并获取简单数据,则应使用ѭ9或类似的低级方法。