Хорошо, нашел проблему.
Я использовал пользовательские атрибуты обновления, которые раньше выглядели так:
def custom_update_attributes(userparams, updater)
unless updater.may_change_user_role_name? self
userparams.delete(:role_name)
userparams.delete(:active)
end
self.update_attributes(userparams)
save
end
Очевидная проблема здесь - сохранение, хотя я изменил свой def validate
на def validate_on_update
, эта проверка также выполнялась для действия сохранения, и, поскольку не задано old_password, ошибка будет возвращена.