ruby-on-rails – 按组的平均值
发布时间:2020-12-17 03:31:12 所属栏目:百科 来源:网络整理
导读:我的网络应用程序中有两个表:一个用于捐赠者(称为“捐赠者”),另一个用于捐赠金额(称为“捐赠”).当您点击捐赠者时,您可以看到他们的所有捐款. 我正在尝试为特定的慈善机构平均与特定日期相关的值.例如,如果捐赠者A存在这些记录: *Donor A* Date Donation
我的网络应用程序中有两个表:一个用于捐赠者(称为“捐赠者”),另一个用于捐赠金额(称为“捐赠”).当您点击捐赠者时,您可以看到他们的所有捐款.
我正在尝试为特定的慈善机构平均与特定日期相关的值.例如,如果捐赠者A存在这些记录: *Donor A* Date Donation Amount 05/04/2013 30 05/04/2013 40 05/05/2013 15 05/05/2013 75 我希望系统还计算并显示05/04/2013的平均捐赠金额为35,而05/05/2013的平均捐赠金额为45. 目前我已尝试在我的捐赠模型中使用group属性: def self.average_donateperdate Donation.average(:donateamount,conditions: ["donor_id = ?",@donor],group: "donatedate") end 这似乎不起作用.由于我是Rails的新手,我不完全确定这是否是正确的做法.还有一些其他帖子涉及这个主题,但没有一个帮助我解决这个问题.任何帮助将不胜感激! 解决方法
执行此操作的最简单语法是:
@donor.donations.group(:donatedate).average(:donateamount) 这将返回{‘donatedate’=>格式的哈希值’平均捐赠’}. 当然,这假设您在Donor模型上有一个has_many:捐赠协会.可重用的方法如下所示: def average_donation_by_date donations.group(:donatedate).average(:donateamount) end 你现在可以简单地打电话: @donor.average_donation_by_date 要直观地看到它,您可以在控制器中调用它: @average_donations = @donor.average_donation_by_date.to_a.sort_by(&:first) 您的视图可能包含以下内容: <table> <thead> <tr> <th>Date</th> <th>Average Donation</th> </tr> </thead> <tbody> <% @average_donations.each do |date,amount| %> <tr> <td><%= date.strftime('MM/dd/yyyy') %></td> <td><%= amount %></td> </tr> <% end %> </tbody> </table> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |