2012-08-28 53 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?'方法。也许你正在测试一个无效的? –