我有我的设计用户模型验证,我想覆盖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方法。
但是当我运行我的代码时,它总是先调用它,然后再调用设计,所以根本不覆盖它。
任何想法,为什么?
这些都是类方法重载但是,我的是模块化设计方法,覆盖 – Matilda
为什么不直接定义' 'User'类本身的valid_password?'这里不需要在模块中。 – RipTheJacker
其实这就是我所做的:) – Matilda