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