我有一個包含date_published的Post模型。我想在索引頁面上顯示鏈接以查看某年的所有帖子(有點像博客有幾個月可以查看)Rails group by year問題
我能想到的迴歸多年的唯一方法是迭代遍歷所有的職位,並返回了職位所在年份的獨特陣容。但這似乎很漫長。有沒有人有更好的解決方案?也許這會更容易,只是創建新的表,所以一個職位belongs_to:年
任何建議?
我有一個包含date_published的Post模型。我想在索引頁面上顯示鏈接以查看某年的所有帖子(有點像博客有幾個月可以查看)Rails group by year問題
我能想到的迴歸多年的唯一方法是迭代遍歷所有的職位,並返回了職位所在年份的獨特陣容。但這似乎很漫長。有沒有人有更好的解決方案?也許這會更容易,只是創建新的表,所以一個職位belongs_to:年
任何建議?
我會使用其中的一個:
find_by_sql
得到不同的年,使用任何一年,揭示功能是在你的數據庫中。可能會根據我預期會有的索引來解決;或
Post.minimum(:date_published).year..Post.maximum(:date_published).year
我喜歡第二個了很多,即使它不佔,一年可能沒有職位的可能性!
使用SQL搜索的日期時間字段的(在我的例子是的updated_at)
years = ActiveRecord::Base.connection.select_all("SELECT DISTINCT DATE_FORMAT(updated_at, '%Y') AS updated_at FROM posts ORDER BY updated_at DESC")
這將在形式返回所有的年份值
[{"updated_at"=>"2009"}, {"updated_at"=>"2008"}, {"updated_at"=>"1979"}, {"updated_at"=>"1922"}]
years.each { |y| puts y['updated_at'] }
2009
2008
1979
1924
你不必在你的Ruby代碼中遍歷它們。您可以使用:group
選項與count
:
>> Post.count(:all, :group => "Year(date_published)")
=> [["2005", 5], ["2006", 231], ["2007", 810], ["2009", 3]]
,然後建立從該鏈接。
是的,我想到你的第二個選擇很多。仍在思考如果那是最好的事情。謝謝 – Cameron 2009-08-06 15:27:26