Обновление защищенных атрибутов с использованием update_all в процессе миграции - PullRequest
0 голосов
/ 11 июня 2010

Поскольку вы не можете использовать обычные методы «update» и «update_attribute» из ActiveRecord для обновления защищенного атрибута, является ли следующий лучший способ обновить атрибут для отдельного пользователя?Полагаю, это не относится к категории «лучших практик», поэтому мне просто любопытно, есть ли более подходящий способ.

1 Ответ

2 голосов
/ 11 июня 2010

Лучший способ - установить его напрямую, а затем сохранить модель:

user = User.find(1)
user.admin = true
user.save

Весь смысл защищенных атрибутов состоит в том, что вам не нужно постоянно беспокоиться об их фильтрации при выполнении таких операций, как @user.update_attributes(params[:user]), которые в противном случае могут превратить не-администратора в администратора или что-то в этом роде. Использование update_all также предотвратит запуск проверок, что почти наверняка не то, что вам нужно.

edit: похоже, что это для миграции, поэтому я бы просто использовал update_all или что-то еще и не слишком беспокоился об этом. Миграции выполняются один раз для каждой среды, а затем никогда больше, поэтому не переживайте слишком сильно.

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