加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – “where”和“find”之间的区别

发布时间:2020-12-17 01:29:24 所属栏目:百科 来源:网络整理
导读:这几乎在 Difference Between find and Where with Relationships回答,但并不完全. (请注意我是如何巧妙地改变问题标题的!) 我做查询 a = Libation.where("user_id = 1" ) # gets 10 recordsb = a.sum("count * weight") # Get right answerc = Libation.wh
这几乎在 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(…)时,你试图在Array对象而不是ActiveRecord :: Relation对象上执行#sum.

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读