【问题标题】:undefined method on ActiveRecord::Relation objectActiveRecord::Relation 对象上的未定义方法
【发布时间】:2012-06-19 19:13:11
【问题描述】:

以下代码

fieldvalue = Admin::FieldValue.where(:item_id => @admin_item.id, :field_id => key)
fieldvalue.update_attributes(:value => value)

引发以下错误

NoMethodError (undefined method `update_attributes' for #<ActiveRecord::Relation:0x00000102dfc868>):

为什么它是Relation 对象而不是FieldValue 对象,管理这个的正确方法是什么

【问题讨论】:

  • 您可以update_attributes 仅用于精确的AR 对象,或者您应该使用update_all

标签: ruby-on-rails activerecord arel


【解决方案1】:

fieldvalue 应该只返回一个值吗?

fieldvalue = Admin::FieldValue.where(:item_id => @admin_item.id, :field_id => key).first
fieldvalue.update_attributes(:value => value)

或者,如果您期望多个项目:

fieldvalue = Admin::FieldValue.where(:item_id => @admin_item.id, :field_id => key)
fieldvalue.update_all(:value => value)

【讨论】:

  • 是 Admin::FieldValue.where(:item_id => @admin_item.id, :field_id => key) 应该只返回一个值
  • 好的,我错过了.first thx!!! (更多解释可以在m.onkey.org/active-record-query-interface找到)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-24
  • 2013-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-09
相关资源
最近更新 更多