Понимание простых обновлений ActiveRecord в Rails - PullRequest
6 голосов
/ 02 февраля 2010

Я просто погружаюсь в ActiveRecord и не смог найти ответ на свой вопрос.Если я обновляю атрибуты объекта и затем вызываю save () ... ActiveRecord сохранит в БД ТОЛЬКО, когда новые значения отличаются от старых значений?

Допустим, я делаю что-то вроде этого:*

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

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

Спасибо

Ответы [ 2 ]

6 голосов
/ 02 февраля 2010

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

4 голосов
/ 02 февраля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...