我的一个模型中包含一个模块。在我的用户模型中具体包含database_authenticatable。
devise :database_authenticatable
模块有一个方法valid_password?(密码)我想覆盖方法如下
def valid_password?(password)
if my_condition_is_true
do_something_new()
else
# do what valid_password(password) always does
end
end
在我的其他地方我正在考虑复制database_authenticatable.rb模块中的valid_password()所定义的内容,但我想知道是否有办法告诉它这样做?像继承我可以做超级?
另外我没有意识到什么,在调用我的valid_password方法之后,它会使用模块valid_password方法,任何想法如何避免这种情况?
答案 0 :(得分:1)
您可以将修改编写为模块并将其包含在内,以便加载类似于加载前一个方法的模块的方式。如果您可以这样做,您应该能够正确地呼叫super
。
看一下这个帖子的一些想法(当然,这取决于代码的其余部分的样子):Rails 3: alias_method_chain still used?