2010-07-06 121 views
2

我們有當前的用戶數據庫,其中的用戶可以在其用戶名中包含任何符號。我們已經開始使用authlogic進行身份驗證。因此,任何當前用戶更新他們的任何信息都會失敗,因爲他們的登錄名具有未接受的字符。在用戶更新時將Authlogic validate_login_field設置爲false

我們希望阻止新用戶使用未被authlogic接受的符號進行註冊,但是那些已經登錄的用戶可以繼續使用它們。

我知道我需要使用這樣的事情:

 
acts_as_authentic do |c| 
    c.validate_login_field = false 
end 

我的問題是如何設置validate_login_field爲false現有用戶,但離開它默認的真實價值爲新用戶註冊?謝謝。

回答

1

我建議忘記了在Authlogic您的特定情況下,特定的驗證功能(即保持它作爲c.validate_login_field = false),並使用validates_format_of一個:with條款設置爲正則表達式,以確保Authlogic有效的用戶名和:if子句來一些PROC或如果驗證應在所有做返回true方法私有方法(使用自己設計的一些特殊應用邏輯)

1

或無法打開的validate_login_field並添加:if選項validates_format_of_login_field_options

更新:

其實忘了,這是一個壞主意,因爲在這種情況下,你必須提供:if選項爲每個可能的驗證。 不僅用於validates_format_of_login_field_options,而且用於validates_length_of_login_field_optionsvalidates_uniqueness_of_login_field_options

相關問題