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