2011-10-31 19 views
0

在我的Rails應用程序中,我有以下PostgreSQL查詢來查找過去一週中評論最多的故事。使用ActiveRecord包裝器進行復雜查詢

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包裝中。可能嗎?

回答

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) 
+0

1.我認爲你想'7.days',7將意味着7秒?還是微秒? :)或者你可以做1.week 2.'2 DESC'是什麼意思? –

+0

'2 desc'表示在第二列降序排序。 – nathanvda

+0

7似乎沒有.days的工作,但我可以添加它,以防萬一停止工作在未來。 – Pygmalion