2011-01-31 20 views
0

的用戶我有authlogic設置這樣Authlogic,不能更新,因爲驗證

acts_as_authentic do |config| 
    config.login_field = 'email' 
    config.merge_validates_length_of_email_field_options :in => 5..50 
    config.validates_length_of_password_field_options = {:on => :update, :minimum => 4 } 
    config.validates_length_of_password_confirmation_field_options = {:on => :update, :minimum => 4} 
end 

,因爲密碼和password_confirmation,想在保存驗證,他們是無我不能更新用戶屬性。有什麼方法暫時關閉驗證,或者有更好的解決方案嗎?

+0

當您更新您的用戶對象,你怎麼做呢?請發佈該代碼。 – 2011-01-31 18:38:09

回答

0

下面是它的工作對我來說:

添加一個條件,您的驗證聲明是這樣的:

config.validates_length_of_password_field_options = {:on => :update, :minimum => 4, :if => :should_validate? } 

然後添加自定義should_validate?功能,以您的用戶模型。例如,你可以做

attr_accessor :updating_password  

def should_validate? 
    updating_password or new_record? 
end 

要驗證密碼,讓它這樣你就可以直接在您的控制器隨時設置user.updating_password = true,因爲它是,如果你不希望任何驗證。

(這是我的第一個答案,所以我希望這是對你有所幫助,否則不不吝指正。)