Можно ли использовать метод 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 ответа
Решение
Да. Объект ActiveRecord в Rails сохраняет свою идентичность в параметре ID. Если идентификатор установлен, Rails будет знать, чтобы обновить запись в базе данных с этим идентификатором.
save
на самом деле это основной способ создания, обновления или любого сохранения объекта в базе данных. Другие методы, такие как update_attributes
просто сахар, который используют save
в их основе.
Это обновление
сохранить (execute_validation = true)
# File vendor/rails/activerecord/lib/active_record/base.rb, line 2533
2533: def save
2534: create_or_update
2535: end