Рубин на рельсах - как я могу переопределить Devise recoverable.rb - в частности, reset_password_by_token - PullRequest
0 голосов
/ 22 мая 2018

после моего предыдущего вопроса ruby ​​on rails 4 - devise - send_reset_password_instructions - сброс пароля - токен сброса пароля недействителен

Я хочу переопределить 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 

после сброса пароля печать на консоли отсутствует.Я использую гем 'rails', '4.2.4'

Как переопределить метод reset_password_by_token

Ответы [ 3 ]

0 голосов
/ 06 августа 2018

Внутри devise.rb файла инициализатора, в блоке devise.setup, попробуйте добавить ниже код

Devise::Models::Recoverable::ClassMethods.module_eval do
    def reset_password_by_token(attributes={})
       debugger
    end
end
0 голосов
/ 14 сентября 2018

Просто добавьте его в качестве функции класса в зависимости от того, какой модал используется в качестве ресурса устройства (например, пользователь):

class User < ActiveRecord::Base
  devise :recoverable

  def self.reset_password_by_token(attributes={})
    # custom code...
    super
  end
end
0 голосов
/ 22 мая 2018

Вы должны поместить свой патч обезьяны в точное то же пространство имен:

module Devise
  module Models
    module Recoverable
      module ClassMethods
        def reset_password_by_token(attributes={})
          ...
          super
        end
      end
    end
  end
end

https://github.com/plataformatec/devise/blob/f39c6fd92774cb66f96f546d8d5e8281542b4e78/lib/devise/models/recoverable.rb

...