Вопрос: Rails: использование groupdate & chartkick для создания совокупного пользовательского графика


Я использую groupdate и chartkick, чтобы попытаться отобразить график, показывающий рост (и падение) нашей пользовательской базы с течением времени.

Используя следующее, он отлично работает в диаграмме столбцов, но переходит в линейную диаграмму:

sum=0
User.group_by_day(:created_at).count.map { |x,y| { x => (sum += y)} }.reduce({}, :merge)

Может кто-то указать мне верное направление? Или есть лучший способ заставить это работать?


7


источник


Ответы:


Это потому, что вам нужно отсортировать, прежде чем делать кумулятивную сумму.

Попробуй это:

sum=0
User.group_by_day(:created_at).count.to_a.sort{|x,y| x[0] <=> y[0]}.map { |x,y| { x => (sum += y)} }.reduce({}, :merge)

11



Ответ Мартина был близок, но я закончил тем, что использовал:

User.group_by_week(:created_at).order("week asc").count.map { |x,y| { x => (sum += y)} }.reduce({}, :merge)

Чтобы получать еженедельно - обратите внимание на порядок («неделя по возрастанию») - это то, что исправлено ...


10