2012-08-28 79 views
2

我有我的設計用戶模型驗證,我想覆蓋valid_password方法,這一點,在我的user.rb類定義裏面我有如何覆蓋valid_password?(密碼)在設計

class User < ActiveRecord::Base 
    devise :database_authenticatable 

    # overwriting the valid_password from database_authenticatable 
    module PostDatabaseAuthenticatable 

    def valid_password?(password) 
    if old_password 
     # do something new 
    else 
     # call valid_password from DatabaseAuthenticatable 
     super 
    end 
    end 

    end 

    include PostDatabaseAuthenticatable 

end 

所以首先,我們通過設計包含database_authenticatable,然後根據我讀的Rails 3: alias_method_chain still used?包含我的PostDatabaseAuthenticatable,它應該完全覆蓋devise的valid_password方法。

但是當我運行我的代碼時,它總是先調用它,然後再調用設計,所以根本不覆蓋它。

任何想法,爲什麼?

回答

1

其實這是一直工作,我調試它錯了。 此外,我不需要模塊overrride,只是createing一個valid_password?用戶類別(密碼)方法insdie做工作

+0

我也在嘗試這個,但不適合我。我需要登錄而不使用密碼認證意味着只使用用戶名登錄。 –

+0

只有當你有一個有效的電子郵件或用戶名時纔會調用'valid_password?'方法。也許你正在測試一個無效的? –