Ruby on rails 从控制器中更新classes属性

Ruby on rails 从控制器中更新classes属性,ruby-on-rails,ruby,ruby-on-rails-3,controller,Ruby On Rails,Ruby,Ruby On Rails 3,Controller,所以我有一个项目数组,我在其中迭代并分别获取每个项目。我想更新一些items属性的值。我曾经这样尝试过: if @request.status = 'Approved' session[:item_ids].each do |item_id| item = Item.where(:id => item_id) item.checked_out = item.requested item.quantity = item.quantity - item.ch

所以我有一个项目数组,我在其中迭代并分别获取每个项目。我想更新一些items属性的值。我曾经这样尝试过:

  if @request.status = 'Approved'
    session[:item_ids].each do |item_id|
    item = Item.where(:id => item_id)
    item.checked_out = item.requested
    item.quantity = item.quantity - item.checked_out
    item.requested = 1
  end
不幸的是,这不起作用,并引发了以下错误:

undefined method `requested' for #<ActiveRecord::Relation:0x007fd01e6ae2a8>
未定义的方法“已请求”#

requested是item类的一个属性,所以我不知道为什么不能更新这些值。任何帮助都将不胜感激

其中
返回类似集合的关系对象,而不是
对象

试试这个:

item = Item.where(:id => item_id).first

实际上,我很惊讶它之前没有失败。

其中
返回类似于关系对象的集合,而不是
对象

试试这个:

item = Item.where(:id => item_id).first

事实上,我很惊讶它没有早些失败。

你不是也错过了一个“结束”吗?一个是“如果”一个是“做”你不也错过了一个“结束”吗?一个用于“if”,一个用于“do”,允许它运行,但是,实际的更新没有发生。知道为什么吗?我想可能是因为if语句,所以我把它注释掉了,这样,理论上,它应该每次都发生,但是它仍然没有更新。问题中还有不平衡的
end
关键字。你有一个需要两个的地方。这也可能会造成问题。实际更新(在数据库中)不应该发生,因为您缺少
#save
调用。您,我的朋友,就是那个人。我在实际文件中有第二个结尾,缺少保存是问题所在。如果我能给你更多的声誉,我会的。这让它可以运行,但是,实际的更新没有发生。知道为什么吗?我想可能是因为if语句,所以我把它注释掉了,这样,理论上,它应该每次都发生,但是它仍然没有更新。问题中还有不平衡的
end
关键字。你有一个需要两个的地方。这也可能会造成问题。实际更新(在数据库中)不应该发生,因为您缺少
#save
调用。您,我的朋友,就是那个人。我在实际文件中有第二个结尾,缺少保存是问题所在。如果我能给你更多的名声,我会的。