проверить, изменилось ли значение поля в фильтре before_update - PullRequest
6 голосов
/ 20 февраля 2010

У меня есть поле базы данных, где я хочу сохранить свой пароль. В фильтре before_create в моей модели я вызываю функцию шифрования и сохраняю текстовый текст в зашифрованный.

Теперь я хочу использовать before_update также для шифрования, но только если значение изменилось. Как я могу написать условие для проверки, изменилось ли значение поля?

Ответы [ 2 ]

26 голосов
/ 20 февраля 2010

Если поле называется name, тогда

object.name_changed?

вернет истину.

4 голосов
/ 23 марта 2010

Поскольку вы обычно не храните пароль в модели, используя поле, которое вы бы открыли для формы, достаточно обновить его только unless password.blank? и иметь реальный пароль в поле "hashed_password", которое вы выиграли не выставляй на бланк.

Спасибо Бену (см. Ниже) за указание на дополнительную защиту вашего зашифрованного пароля с помощью attr_protected, чтобы он не был напрямую доступен / обновлен из формы. + 1

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