我有一个包含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