Как написать запрос для группировки записей в Ruby on Rails? - PullRequest
0 голосов
/ 16 сентября 2011

Я хочу получить количество всех пользователей на основе созданного в

   User.group("Date(created_at)").count

Это даст мне вывод, как

 {Wed, 03 Aug 2011=>25, Thu, 04 Aug 2011=>22, 06 Aug 2011=>4, Sun, 07 Aug 2011=>6, Mon, 08 Aug 2011=>5} 

Я хочу иметь массив что-то вроде: -

 [25,22,0,4,5]  // zero is for the dates when no record is there for that date.

1 Ответ

2 голосов
/ 16 сентября 2011

@foo = User.group(:created_at).count даст вам ваших пользователей, сгруппированных по дате их создания.

Как вы упомянули, вы получите хеш {:date => count}

Затем вы можете посмотреть на @foo.values (чтобы получить массив подсчетов) [25,22,0,4,5] или перебрать его как

@foos.each_pair do |date, count|
  puts "#{date}: #{count}"
end

РЕДАКТИРОВАТЬ Теперь я понимаю, что вы пытались спросить.

Вы могли бы сделать что-то вроде этого

start_date = Date.today - 7.days
end_date = Date.today
@foo = User.group("DATE(created_at)").where(:created_at => start_date..end_date).count
counts = (start_date..end_date).map{ |d| @foo[d] || 0 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...