Rails has_many:通过“子对象”的sum属性 – > SQL Toughy
我有三个, one-to-many
关系,一个has_many :through
关联和一个具有我想要求和的属性的对象。
这可能听起来很傻,但假设例如以棒球为主题的应用程序:
:league has_many :teams :team has_many :users :league has_many :homeruns, :through => :users :user has_many :homeruns
我想做的事情,在联赛show
页面上列出各自league
中的每支球队,并累计每支球队有多少英尺的本垒打 。 ( Feet
是homerun
一个属性。)
我现在最接近的是@league.homeruns.sum(:feet)
(显示每个联赛的本垒打总距离),但我想在球队一级做到这一点,按联赛过滤。
合理? 任何帮助将深表感谢。
如果你添加:team has_many :homeruns, through: :users
,你可以使用team.homeruns.sum(:feet)
来获得每个团队的team.homeruns.sum(:feet)
,对吧? 将其转换为team
模型中的方法可能最好:
# team.rb has_many: homeruns, through: :users def total_homerun_distance self.homeruns.sum(:feet) end
然后列出特定league
所有团队,只需遍历视图中属于该league
每个team
,包含在您想要的任何HTML中。 例如,要将其显示为表格:
# views/leagues/show.html.erb <% @league.teams.each do |team| %> <%= team.name %> <%= team.total_homerun_distance %> <% end %>
- Rails 4活动记录validation – 如果存在至少一个属性而有条件地validation4个属性的存在,同时不允许存在
- 你会如何建立这个每日课程表?
- ActiveRecord :: Relation对象如何调用类方法
- Controller中的ActiveRecord :: AssociationTypeMismatch#在下拉列表中创建Rails自联接
- Rails:has_many有额外的细节吗?
- 在gem中转换ActiveRecord的扩展名
- 如何使用activerecord的查询界面和范围来识别比赛中的最爱
- validationhabtm关联的长度而不保存
- Railsvalidation搜索参数