可以使用Rails ActiveRecord #save方法更新现有记录吗?

可以使用#save方法更新记录吗?

我知道我可以使用save 创建一条新记录,如下所示:

 person = Person.new person.save # rails will insert the new record into the database. 

但是,如果我首先找到现有记录,修改模型,然后保存它,这与执行更新的结果相同吗?

 person = Person.find(:first, :condition => "id = 1") person.name = "my_new_name" person.save # is this save performing a update or insert? 

是。 Rails中的ActiveRecord对象在ID参数中保留其标识。 如果设置了ID,Rails将知道使用该ID更新数据库中的记录。

实际上, save是创建,更新或以任何方式将对象保存到数据库的主要方式。 像update_attributes这样的其他方法只是在其核心使用save糖。

这是一个更新。

保存(perform_validation = true)

  # File vendor/rails/activerecord/lib/active_record/base.rb, line 2533 2533: def save 2534: create_or_update 2535: end