好吧,你幾乎有它自己 - 只是次要的細節可以是這樣的:
user_ids = [id1, id2]
full_sum = 3 * Animal.where(:user_id => user_ids).sum(:mensal_cost)
注意:不要忘了,你可以用三個相加相乘之後,它會是一樣的如求和乘以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}
}
泰倫,所有的人都知道,謝謝你的回答。但這種方式會讓我所有用戶的mensal_cost總數乘以3.我真正需要的是看到像:id1 mensal_cost * 3 = 300,id2 mensal_cost * 3 = 700 ... – Bruno
啊很酷。是的,我明白你的意思了。你可以遍歷用戶數組來構建它......在一個查詢中可能有一個「group by」方法,但迭代方式可以工作得很好。我會添加一個例子。 –
偉大的:),你的例子probab會幫助我很多,因爲現在我需要爲每個用戶ID獲取用戶名(在用戶表中)。 我想我可能需要做一些像User.joins(:動物)....在這裏我不知道如何構造一個哈希,我已經閱讀但沒有得到它:( – Bruno