在rails中分组记录

时间:2012-08-08 20:56:55

标签: ruby-on-rails ruby-on-rails-3 activerecord

我正在构建一个简单的博客应用程序,我想添加一个存档,人们可以点击一个月,并显示该月份的所有文章。这就像根据月份和年份进行分组。例如,

文章:

  • 2012年6月
  • 2011年5月

因此,当点击日期时,它会将您带到页面并列出该月的所有文章。我怎么能完成它?

1 个答案:

答案 0 :(得分:1)

2012年7月:

require 'date'

month = 7
year = 2012

start_date = Date.new(year,month,1)
end_date =  Date.new(year,month+1,1) - 1.day

articles_in_july = Article.where(:created_at => start_date..end_date)

您可以使用上述功能在控制台中进行测试。但是,在您的模型中,您可能需要:

def self.in_month(month,year)
    start_date = Date.new(year,month,1)
    end_date =  Date.new(year,month+1,1) - 1.day
    where(:created_at => start_date..end_date)
end

然后你可以打电话:

Article.in_month(7,2012)

或者,假设用户有很多文章:

current_user.articles.in_month(7,2012)