Rails 4 Monkey patch выдает исключение при выполнении метода класса

У меня есть проект рельсов, который использует Sorcery для аутентификации. Я хочу изменить поведение функции сброса пароля, чтобы она не создавала новый токен сброса, если он уже существует. Я считаю, что соответствующий код:

  def deliver_reset_password_instructions!
    config = sorcery_config
    # hammering protection
    return false if config.reset_password_time_between_emails.present? && self.send(config.reset_password_email_sent_at_attribute_name) && self.send(config.reset_password_email_sent_at_attribute_name) > config.reset_password_time_between_emails.seconds.ago.utc
    self.class.sorcery_adapter.transaction do
      generate_reset_password_token!
      send_reset_password_email! unless config.reset_password_mailer_disabled
    end
  end

Я создал следующий патч обезьяны, чтобы исправить проблему:

Sorcery::Model::Submodules::ResetPassword::InstanceMethods.module_eval do
  def deliver_reset_password_instructions!
    config = sorcery_config
    # hammering protection
    return false if config.reset_password_time_between_emails.present? && self.send(config.reset_password_email_sent_at_attribute_name) && self.send(config.reset_password_email_sent_at_attribute_name) > config.reset_password_time_between_emails.seconds.ago.utc
    self.class.sorcery_adapter.transaction do
      generate_reset_password_token! unless reset_password_token.present?
      send_reset_password_email! unless config.reset_password_mailer_disabled
    end
  end
end

Я получаю следующую ошибку в разработке:

undefined method `sorcery_adapter' for #<Class:0x00000008b82d08>

Я был бы очень признателен за любые идеи или предложения, касающиеся того, почему это происходит, как создать функциональный патч или лучший способ обойти все это. Заранее спасибо.

0 ответов

Другие вопросы по тегам