Вопрос очень прост, проверяет ли update_attributes каждую возможную проверку модели, даже если я не хочу обновлять некоторые атрибуты?
У меня есть вид редактирования, где пользователь может изменить свой пароль, но только если он его пропустит, т. Е. Если он пуст, пароль не изменится.
Итак, я делаю следующее в контроллере:
def update
params[resource_name].delete(:password) if params[resource_name][:password].blank?
params[resource_name].delete(:password_confirmation) if params[resource_name][:password_confirmation].blank?
params[resource_name].delete(:current_password) if params[resource_name][:current_password].blank?
if resource.update_attributes(params[resource_name])
...
end
end
Я определил следующую проверку для модели:
validates :password,
:length => { :within => 6..40 }
Поэтому, когда я использую обновление вызова, я получаю сообщение о том, что пароль слишком короткий
Пс .: Я использую Devise, чтобы справиться с этим.
РЕДАКТИРОВАТЬ: Кто-нибудь из вас знает, есть ли у Devise какие-либо проверки пароля? Потому что я удалил проверку, и она работала правильно, но если я ввел короткий пароль, он все равно показывает проверку, говоря, что она слишком коротка.