gpt4 book ai didi

mysql - Rails 使用 ActiveRecord 乘以 afcolumn 的值

转载 作者:行者123 更新时间:2023-11-29 20:32:35 25 4
gpt4 key购买 nike

我想根据用户 ID 乘以特定列的值。

假设我有一个表 users,其中包含用户 1 (id 1) 和用户 2 (id 2),以及一个表 animals,其中包含 namemensal_cost

好的,然后我为用户 1 (id 1) 添加了两只动物,为用户 2 (id 2) 添加了 1 只动物

我想知道如何使用ActiveRecord计算3个月增加相同基值后的mensal_cost收入,这意味着我必须将实际值乘以3 .

我正在尝试这样的事情:

Animal.where(user_id: ?).sum('3*mensal_cost') 

由于我不知道可以存在多少个用户,因此我必须编写一个调用来列出 3 个月后每个用户 ID 的金额。

最佳答案

好吧,你几乎已经自己拥有了它 - 只是次要细节可以是这样的:

user_ids = [id1, id2]
full_sum = 3 * Animal.where(:user_id => user_ids).sum(:mensal_cost)

注意:不要忘记求和后可以乘以 3,这与将每个乘以 3 相加,例如

(3 * 2) + (3 * 3) + (3 * 4) == 3 * (2 + 3 + 4)

或者您可以迭代用户以获得他们的个人总和,如下所示:

mensal_sums = {}
user_ids = [id1, id2]
user_ids.each do |user_id|
mensal_sums[user_id] = 3 * Animal.where(:user_id => user_id).sum(:mensal_cost)
end

puts mensal_sums
=> {id1 => 63, id2 => 27}

编辑以及您想要用户名的地方:

mensal_sums = {}
users = User.find([id1, id2])
users.each do |user|
mensal_sums[user.id] = {:user_name => user.name,
:sum => (3 * user.animals.sum(:mensal_cost)) }
end

puts mensal_sums
=> {id1 => {:user_name => "Bob Jones", :sum => 63},
id2 => {:user_name => "cJane Brown", :sum =>27}
}

关于mysql - Rails 使用 ActiveRecord 乘以 afcolumn 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38963829/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com