我正在使用一个名为 Recover 的模型。在创建模型之前,我想使用 Recover.combo_id 属性作为引用保存 bool 属性 Combo.occupied = true。

看来我的 SQL 正在正确执行查询,但它没有保存此属性。如何保存 Combo.occupied = true?

恢复.rb:



rails 控制台:



恢复 Controller #create

最佳答案

您需要调用 save 将新值写入数据库:

def checkin
  combo = Combo.find_by_id(combo_id)
  combo.occupied = true
  combo.save!
end

如果您使用 update_attribute ,这会更容易。另外,如果你有一个belongs_to关系,你可以省去 find :
belongs_to :combo

def checkin
  if combo # true unless combo_id is nil
    combo.update_attribute(:occupied,true)
  end
end

请注意 update_attribute 绕过验证。如果您需要验证,请改用 update_attributes(:occupied=>true)

关于ruby-on-rails - 如何使用回调更新另一个模型?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4621670/

10-10 22:00