2012-08-28 118 views
0

我有一个模块包含在我的一个模型中。在我的用户模型中具体包含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 
在我别的我想无论是在定义valid_password的insdide()复制

database_authenticatable.rb模块,但我想知道是否有办法告诉它做到这一点?像继承我可以做超级?

另外我没有意识到什么,在调用我的valid_password方法之后,它声明模块valid_password方法,任何想法如何避免这种情况?

+0

看到这个答案的一对夫妇的想法:HTTP://计算器。 com/a/44712​​02/2988 –

+0

非常感谢:)! – Matilda

回答

1

您可以将修改作为模块写入并包含它,因此它的加载方式类似于加载之前方法的模块。如果你能做到这一点,你应该能够正确地拨打super

看一看这个线程的一些想法(这将取决于你的代码的其余部分的外观,当然):Rails 3: alias_method_chain still used?