Rails - запрос к групповым суммам - PullRequest
1 голос
/ 04 ноября 2010

Я пытаюсь создать запрос, который выполняет следующее:

  • Цель: показать общее количество посещений всех продуктов компании за каждый день этого месяца.
  • Во-первых: мы находим всех пользователей, которые принадлежат любому @ company.product (у каждого пользователя есть product_id).
  • Сумма всех посещений среди этих пользователей, сгруппированных по дням, за каждый из последних 30 дней.
  • Чтобы представить эти суммы visit_count в виде строки из 30 значений, разделенных запятыми (23,26,21,63,21,42 и т. Д.) В представлении.

Пока (пока нет сумм):

#controller
@visits = User.group("date(created_at)").having("product_id IN (?) AND created_at > ?", @company.products.select("id"), 1.month.ago).order("created_at").select("visit_count")  
  # this simpler version causes error: undefined method 'empty?' for 2010-10-03 17:55:57 UTC:Time
  @visits = User.group("created_at").having("date(created_at) > (?)", 1.month.ago)

#view:
<%= @visits.map(&:visit_count).join(",")

Приведенный выше запрос вызывает ошибку (3 аргумента по 2), но я пробовал много комбинаций, похожих на эту, и продолжаю получать ошибки. Я просто не слишком опытен с ActiveRecord. Как написать этот запрос? Большое спасибо.

1 Ответ

1 голос
/ 27 января 2011

Это работает для меня ...

User.group("DATE(created_at)").having(['created_at > ?', 1.month.ago]).count

выходы ...

=> {"2011-01-19"=>2, "2011-01-27"=>1} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...