Я просто погружаюсь в ActiveRecord и не смог найти ответ на свой вопрос. Если я обновляю атрибуты объекта и затем звоню, сохраняют ()... ActiveRecord сохранит к DB ТОЛЬКО, когда новые значения будут отличаться от старых значений?
Скажем, я делаю что-то вроде этого:
thing_to_update = Thing.find_or_create_by_code(some_code)
if thing_to_update.name != some_name
thing_to_update.update_attribute(:name, some_name)
end
Я не хочу делать дополнительные вызовы к дб, если я не имею к тому, потому что я должен буду потенциально обновить много объектов. Я пытался прочитать документы, и это ничего не упоминает о сравнении новых значений со старыми. Я пропускаю что-то здесь?
Спасибо
Active Record не использовался для частичного обновления SQL, но он используется с апреля 2008 года.
ActiveRecord не будет обновлять вашу запись, если атрибуты не изменились. Вы можете убедиться в этом сами, вызвав thing_to_update.save из консоли и просмотрев журнал. ActiveRecord загрузит запись, но не будет пытаться ее обновить.