Rails группирует данные и рендерит как json - PullRequest
0 голосов
/ 17 января 2011

У меня есть модель User со многими купонами. Каждый купон имеет значение.

Я хотел бы получить некоторые данные обо всех пользовательских купонах, например сумму всех купонов для каждого пользователя. Я также хотел бы сгруппировать данные по дням.

Как я могу это сделать?

1 Ответ

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

Существует метод с именем sum, который можно использовать в ассоциациях. Например:

@user.coupons.all.sum(&:value)

В этом случае значением является атрибут, который вы хотите суммировать.

И сгруппировать их по дате, тогда, возможно, что-то вроде этого:

#group_by will create a hash with the dates as keys and place the coupons in arrays
@coupons = @user.coupons.all.group_by{ |coupon| coupon.created_at.strftime("%D") }

#Loop through all keys (dates) and get the sum of the coupons
@coupons.keys.each |date|
  puts "Date: #{date}, Value: #{@coupons[date].sum(&:value)}"
end
...