Ruby on rails 使用ActiveRecord包装器进行复杂查询

Ruby on rails 使用ActiveRecord包装器进行复杂查询,ruby-on-rails,postgresql,activerecord,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 B

在我的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}")

我遇到了一些跨平台的兼容性问题,尤其是在>=。。。子句,我想使这个查询总体上不那么脆弱。然而,我似乎找不到一种方法将这样的复杂查询放入Rails提供的ActiveRecord包装器中。有可能吗?

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

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

1.我想你想要7天,7意味着7秒?还是微秒或者你可以做1.2周。2 DESC是什么意思?2 DESC表示在第二列降序。7似乎在没有.days的情况下工作,但我可以添加它,以防将来停止工作。