2011-01-17 2 views
0

J'ai un modèle d'utilisateur avec de nombreux coupons. Chaque coupon a une valeur.Rails Données du groupe et rendu en tant que json

Je voudrais récupérer quelques données sur tous les coupons de l'utilisateur, comme la somme de la valeur de tous les coupons pour chaque utilisateur. Je voudrais également regrouper les données par jour.

Comment est-ce que je peux faire ceci?

Répondre

1

Il existe une méthode appelée somme pouvant être utilisée sur les associations. Par exemple:

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

Dans ce cas, la valeur est l'attribut que vous souhaitez additionner.

et de regrouper ces par date, alors peut-être quelque chose comme ceci:

#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 
Questions connexes