Так, у меня есть две модели, Пользователь и Вещь.
User
has_many :things
end
Thing
belongs_to :user
end
Thing
связали дату с ним. Пользователь мог бы добавить нулевые вещи однажды, и 4 следующее, и 7 на следующий день после этого, затем обнулить в течение нескольких дней. Вы получаете идею.
Теперь, то, что я хотел бы получить, является массивом значений в течение прошлых 7 дней. Сколько вещей пользователь добавлял? Я хочу удостовериться, что это включает нули в течение многих дней, где ничто не было добавлено. Например, это могло бы возвратиться [0, 4, 7, 0, 0, 11, 2]
.
Это - еще один пример чего-то, что я уверен, довольно легко сделать, но мой google-fu приводит меня к сбою.:-)
Спасибо!
Предложение Роба приведет к 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 }
Как насчет чего-то вроде
class User < ActiveRecord::Base
def counts_for_last_week
(1..7).collect {|i| things.count(:conditions=>["thing_date = ?', i.days.from_now])]
end
end