如何在Ruby on Rails中编写用于分组记录的查询?

时间:2011-09-16 12:32:11

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

我希望根据

创建的所有用户数量
   User.group("Date(created_at)").count

它会给我一个类似

的输出
 {Wed, 03 Aug 2011=>25, Thu, 04 Aug 2011=>22, 06 Aug 2011=>4, Sun, 07 Aug 2011=>6, Mon, 08 Aug 2011=>5} 

我希望有一个类似的数组: -

 [25,22,0,4,5]  // zero is for the dates when no record is there for that date.

1 个答案:

答案 0 :(得分:2)

@foo = User.group(:created_at).count会根据created_at日期对您的用户进行分组。

如你所说,你会得到{:date => count}

哈希值

然后,您可以查看@foo.values(获取计数数组)[25,22,0,4,5],或者像

一样迭代它
@foos.each_pair do |date, count|
  puts "#{date}: #{count}"
end

编辑我现在明白你要问的是什么。

你可以做这样的事情

start_date = Date.today - 7.days
end_date = Date.today
@foo = User.group("DATE(created_at)").where(:created_at => start_date..end_date).count
counts = (start_date..end_date).map{ |d| @foo[d] || 0 }