【问题标题】:Sum of values in a has_many through - belongs_to associationhas_many 到 - belongs_to 关联中的值总和
【发布时间】:2021-01-23 20:12:12
【问题描述】:

在 Ruby on Rails 6.1 项目中,我有 Users 可以选择 Activities 的列表。每个Activity 都有一个value。我想获得所有用户选择的所有活动的总和。

我的模特是:

class User < ApplicationRecord
  has_many :user_activities, dependent: :destroy
  has_many :activities, -> { distinct }, through: :user_activities
end
class Activity < ApplicationRecord
  has_many :user_activities, dependent: :destroy
  has_many :users, -> { distinct }, through: :user_activities
end
class UserActivity < ApplicationRecord
  belongs_to :user
  belongs_to :activity
end

如前所述,在架构中,Activities 有一个整数字段,我称之为value,每个活动都有一个选定的值。

我设法使用以下代码获得所有用户选择的所有活动的总和,但我想知道是否有更好的方法来做到这一点。

total_value = 0
UserActivity.all.each do |selected_user_activity|
  total_value += selected_user_activity.activity.value
end

【问题讨论】:

    标签: ruby-on-rails has-many-through belongs-to


    【解决方案1】:

    如果我理解正确,这很简单。

    sum_of_all_values = User.joins(:activities).sum('activities.value')
    

    【讨论】:

      猜你喜欢
      • 2015-04-17
      • 1970-01-01
      • 1970-01-01
      • 2013-10-09
      • 2015-09-11
      • 2021-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多