我想重写devise recoverable.rb,特别是reset_password_by_token方法。原因是调试重置密码问题。
我该怎么做?
我尝试创建app / models / recoverable.rb并输入如下代码:
class Recoverable < Devise:: Models
def reset_password_by_token(attributes={})
puts "reset_password_by_token test"
super
end
end
重置密码后没有打印到控制台。 我正在使用gem&#39; rails&#39;,&#39; 4.2.4&#39;
如何覆盖reset_password_by_token方法
答案 0 :(得分:0)
您需要将猴子补丁放在完全相同的命名空间中:
module Devise
module Models
module Recoverable
module ClassMethods
def reset_password_by_token(attributes={})
...
super
end
end
end
end
end
答案 1 :(得分:0)
在devise.rb
初始化程序文件中的devise.setup
块中,尝试添加以下代码
Devise::Models::Recoverable::ClassMethods.module_eval do
def reset_password_by_token(attributes={})
debugger
end
end
答案 2 :(得分:0)
只需将其作为类函数添加到用作模式资源(例如用户)的任何模式中即可:
class User < ActiveRecord::Base
devise :recoverable
def self.reset_password_by_token(attributes={})
# custom code...
super
end
end