使用ActiveRecord包装器进行复杂的查询

时间:2011-10-31 19:29:55

标签: ruby-on-rails postgresql activerecord

在我的Rails应用程序中,我有以下PostgreSQL查询,以查找过去一周内评论最多的故事。

 last_week = Date.today() - 7
 most_commented_comments = Comment.find_by_sql("SELECT story_id, COUNT(*) AS total FROM comments WHERE created_at >= (CAST '#{last_week}' AS date) GROUP BY story_id ORDER BY 2 DESC LIMIT #{limit}")

我遇到了一些跨平台的兼容性问题,尤其是created_at >=...子句,我想让整体问题变得不那么脆弱。但是,我似乎无法找到一种方法来将这样的复杂查询拟合到Rails给出的ActiveRecord包装器中。有可能吗?

1 个答案:

答案 0 :(得分:0)

我想我找到了一个更好的方法。

most_commented_comments = Comment.where("created_at >= ?", Date.today - 7).select("story_id, COUNT(*) as total").group("story_id").order("2 DESC").limit(limit)