ruby on rails - 我如何覆盖Devise recoverable.rb - 特别是reset_password_by_token
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ruby on rails - 我如何覆盖Devise recoverable.rb - 特别是reset_password_by_token相关的知识,希望对你有一定的参考价值。
我想覆盖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'trail','4.2.4'
如何覆盖reset_password_by_token方法
答案
您需要将猴子补丁放在完全相同的命名空间中:
module Devise
module Models
module Recoverable
module ClassMethods
def reset_password_by_token(attributes={})
...
super
end
end
end
end
end
另一答案
在devise.rb
初始化文件中,在devise.setup
块中,尝试添加下面的代码
Devise::Models::Recoverable::ClassMethods.module_eval do
def reset_password_by_token(attributes={})
debugger
end
end
另一答案
只需将其作为类函数添加到用作设计资源的任何模态(ei。用户):
class User < ActiveRecord::Base
devise :recoverable
def self.reset_password_by_token(attributes={})
# custom code...
super
end
end
以上是关于ruby on rails - 我如何覆盖Devise recoverable.rb - 特别是reset_password_by_token的主要内容,如果未能解决你的问题,请参考以下文章
Ruby on Rails 如何使用 yield 进行布局?