Ruby on rails 如何使用RubyonRails2.3.9更新数据库属性

Ruby on rails 如何使用RubyonRails2.3.9更新数据库属性,ruby-on-rails,update-attributes,Ruby On Rails,Update Attributes,我正在处理一个控制器操作,我想做的是修改数据库中的记录 我有以下代码: def save_reserve @pnr = Pnr.find_by_email(params[:pnr][:email]) if (!@pnr.blank?) @pnr.update_attributes(params[:pnr]) else @pnr = Pnr.new(params[:pnr]) if @pnr.save ...

我正在处理一个控制器操作,我想做的是修改数据库中的记录

我有以下代码:

def save_reserve
    @pnr = Pnr.find_by_email(params[:pnr][:email])
    if (!@pnr.blank?)
      @pnr.update_attributes(params[:pnr])
    else
      @pnr = Pnr.new(params[:pnr])
      if @pnr.save
        ...
      else
        ...
      end
    end
  end
为什么
@pnr.update_属性(params[:pnr])
不起作用

但是,如果我这样做:

      @pnr.update_attribute(:name, params[:pnr][:name])
      @pnr.update_attribute(:lastname, params[:pnr][:lastname])
      @pnr.update_attribute(:phone, params[:pnr][:phone])
      @pnr.update_attribute(:addr, params[:pnr][:addr])
它是有效的。。。我错过什么了吗


谢谢大家!

model.update_attributes(hsh)
实际上与调用
model.attributes=hsh相同;model.save
-它受对象上任何回调和验证的影响


model.update\u属性(字段,值)
直接更新数据库中的该字段,而无需运行任何回调或验证


如果您检查
@pnr.update_attributes(params[:pnr])
的返回值,您可能会看到它是
false
。你应该有一个
if[…]
检查,方法与你在cose的
分支中对
保存
调用的方法相同。更新属性(hsh)
实际上与调用
model.attributes=hsh相同;model.save
-它受对象上任何回调和验证的影响


model.update\u属性(字段,值)
直接更新数据库中的该字段,而无需运行任何回调或验证

如果您检查
@pnr.update_attributes(params[:pnr])
的返回值,您可能会看到它是
false
。您应该有一个
if[…]
检查此问题,方法与您在cose的
new
分支中执行
save
调用相同