Понимание простых обновлений ActiveRecord в направляющих

Я просто погружаюсь в 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

Я не хочу делать дополнительные вызовы к дб, если я не имею к тому, потому что я должен буду потенциально обновить много объектов. Я пытался прочитать документы, и это ничего не упоминает о сравнении новых значений со старыми. Я пропускаю что-то здесь?

Спасибо

6
задан John Topley 2 February 2010 в 17:09
поделиться

2 ответа

Active Record не использовался для частичного обновления SQL, но он используется с апреля 2008 года.

6
ответ дан 10 December 2019 в 00:38
поделиться

ActiveRecord не будет обновлять вашу запись, если атрибуты не изменились. Вы можете убедиться в этом сами, вызвав thing_to_update.save из консоли и просмотрев журнал. ActiveRecord загрузит запись, но не будет пытаться ее обновить.

4
ответ дан 10 December 2019 в 00:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: