gpt4 book ai didi

ruby-on-rails - "where"和 "find"之间的区别

转载 作者:行者123 更新时间:2023-12-03 15:30:19 25 4
gpt4 key购买 nike

这几乎在 Difference Between find and Where with Relationships 中得到了回答但不完全是。 (注意我是如何巧妙地改变问题标题的!)我做查询

a = Libation.where("user_id = 1" )   # gets 10 records
b = a.sum("count * weight") # Get right answer
c = Libation.where("user_id = 2" ) # gets 8 records
d = c.sum("count * weight") # Get right answer

现在我会了

e = Libation.all                # gets 18 records, good
f = e.sum("count * weight") # BOOM! I get

NoMethodError (undefined method `+' for #<Libation:0x3b91e88>):

坚果。我试图找到相关文档,但发现很少。或者我没找对地方。

最佳答案

#where 返回一个 ActiveRecord::Relation 对象,您可以对其执行其他方法(例如 #sum)。但是,#all 执行查询会返回一组结果,因此当您执行 e.sum(...) 时,您正在尝试执行 #sum Array 对象上,而不是在 ActiveRecord::Relation 对象上。

您可以尝试使用 #scoped 代替:

e = Libation.scoped
f = e.sum("count * weight")

关于ruby-on-rails - "where"和 "find"之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6051895/

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