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