2010-04-01 3 views
0

у меня есть это в моем user.rb:Rails проверка «неудача, когда успех»

attr_accessor :old_password 
    def validate 
    unless password.nil? 
     errors.add_to_base("Old password entered incorrect") unless self.valid_password? old_password 
    end 
    end 

Я old_password как виртуальный атрибут, который должен быть утвержден в соответствии с текущим перед обновлением до нового пароля. Моя проблема заключается в том, что при правильном вводе (пароль == подтверждение пароля и self.valid_password? Old_password) ошибка приведет к возврату и возвращает мне форму. Странная часть состоит в том, что данные будут фактически обновляться в базе данных, и она не будет на неправильном входе; хотя и даст ту же ошибку («Старый пароль введен неверный»). Что я делаю неправильно?

+0

Можете ли вы сформировать свой код? – shingara

+0

Новый ..здесь не знаю как, но спасибо Стив. – Fredrik

+0

Пользователь ctrl-k для форматирования. – Salil

ответ

0

Хорошо, нашел проблему. Я использовал пользовательские обновления атрибутов, который использовал выглядеть следующим образом:

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, ошибка будет получена.

Смежные вопросы