Rails:在一段时间内从模型中获取值数组

Tim*_*van 5 activerecord ruby-on-rails

所以,我有两个模型,User和Thing.

User
  has_many :things
end

Thing
  belongs_to :user
end
Run Code Online (Sandbox Code Playgroud)

Thing有一个与之相关的日期.用户可能会在一天中添加零件,在下一天中添加4件,在此之后添加7件,然后在几天内添加零件.你明白了.

现在,我想得到的是过去7天的一系列值.用户添加了多少东西?我想确保在没有添加任何内容的日子里它包含零.例如,它可能会返回[0, 4, 7, 0, 0, 11, 2].

这是我确定相当容易做到的事情的另一个例子,但是我的google-fu让我失望了.:-)

谢谢!

Gde*_*lin 2

Rob 的建议将导致 7 个查询。

以下是如何在一个查询中完成此操作:

things_by_date = user.things.count(:group => 'DATE(created_at)', :conditions => ['DATE(created_at) > ?', 7.days.ago])
(1..7).collect { |d| things_by_date[d.days.ago.to_date.to_s] || 0 }
Run Code Online (Sandbox Code Playgroud)