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

时间:2010-03-24 03:05:55

标签: ruby-on-rails activerecord

可以使用#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?

2 个答案:

答案 0 :(得分:21)

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

事实上,

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

答案 1 :(得分:4)

这是一次更新。

save(perform_validation = true)

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