所以,我有两个模型,User和Thing。
User
has_many :things
end
Thing
belongs_to :user
end
Thing
有与之关联的日期。用户可能会在一天中添加零件,在下一天中添加4件,在此之后添加7件,然后在几天内添加零件。你明白了。
现在,我想得到的是过去7天的一系列值。用户添加了多少东西?我想确保在没有添加任何内容的日子里它包含零。例如,它可能会返回[0, 4, 7, 0, 0, 11, 2]
。
这是我确定相当容易做到的事情的另一个例子,但是我的google-fu让我失望了。 : - )
谢谢!
答案 0 :(得分: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 }
答案 1 :(得分:1)
像
这样的东西class User < ActiveRecord::Base
def counts_for_last_week
(1..7).collect {|i| things.count(:conditions=>["thing_date = ?', i.days.from_now])]
end
end