Направляющие: Получение массива значений из модели какое-то время период

Так, у меня есть две модели, Пользователь и Вещь.

User
  has_many :things
end

Thing
  belongs_to :user
end

Thing связали дату с ним. Пользователь мог бы добавить нулевые вещи однажды, и 4 следующее, и 7 на следующий день после этого, затем обнулить в течение нескольких дней. Вы получаете идею.

Теперь, то, что я хотел бы получить, является массивом значений в течение прошлых 7 дней. Сколько вещей пользователь добавлял? Я хочу удостовериться, что это включает нули в течение многих дней, где ничто не было добавлено. Например, это могло бы возвратиться [0, 4, 7, 0, 0, 11, 2].

Это - еще один пример чего-то, что я уверен, довольно легко сделать, но мой google-fu приводит меня к сбою.:-)

Спасибо!

5
задан Tim Sullivan 23 January 2010 в 18:53
поделиться

2 ответа

Предложение Роба приведет к 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 }
2
ответ дан 15 December 2019 в 06:26
поделиться

Как насчет чего-то вроде

class User < ActiveRecord::Base
  def counts_for_last_week
    (1..7).collect {|i| things.count(:conditions=>["thing_date = ?', i.days.from_now])]
  end
end
1
ответ дан 15 December 2019 в 06:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: