数据映射器 - 计算在特定日期上载的对象

时间:2013-06-12 11:17:40

标签: ruby sinatra datamapper

我正在构建一个简单的应用程序,我想向管理员显示一些简单的统计信息。我想知道是否有可能从数据库获取使用datamapper在同一日期创建的对象计数数组,或者我是否必须手动浏览记录并计算它们?

对象有created_at属性。

2 个答案:

答案 0 :(得分:0)

试试这个: -

假设您要计算在特定日期创建的用户。

   User.group('date(created_at)').count

  => {"2013-05-20"=>66,
 "2013-05-07"=>46,
 "2013-05-17"=>9,
 "2013-05-13"=>28,
 "2013-05-22"=>22,
 "2013-05-15"=>43,
 "2013-05-08"=>32,
 "2013-06-12"=>2,
 "2013-05-28"=>22,
 "2013-05-16"=>35,
 "2013-05-09"=>33,
 "2013-05-10"=>132,
 "2013-05-21"=>5,
 "2013-05-14"=>38,
 "2013-05-11"=>4}

答案 1 :(得分:0)

所以我设法解决了它,我不知道它是否是正确的方法,但它的工作原理

days = Array.new
count = Array.new

photos_per_day = Photo.aggregate(:all.count, :upload_date)
photos_per_day.each do |ppd|
  count.push(ppd[0])
  days.push(ppd[1].day.to_s + " " + Date::MONTHNAMES[photo[1].month])
end

{:days => days, :count => count}.to_json