первостепенное значение Devise :: Mailer - PullRequest
3 голосов
/ 24 февраля 2011

Я пытаюсь добавить метод в Devise :: Mailer, метод должен отправлять почту пользователю со ссылкой для установки его собственного пароля, когда администратор создает нового пользователя без пароля.

Devise::Mailer.class_eval do
  def set_password_instructions(record)
    setup_mail(record, :set_password_instructions)
  end
end

Если я помещаю это в / lib и требую его в application.rb, оно загружается до настоящего Devise.
Если мне требуется это поверх моего user.rb, оно работает впервые, происходит сбой с неизвестным методом set_password_instructionsв любое другое время.

Это работает, только когда я добавляю приведенный выше код непосредственно в user#send_set_password_instructions

user.rb:

  def send_set_password_instructions
    Devise::Mailer.class_eval do
      def set_password_instructions(record)
        setup_mail(record, :set_password_instructions)
      end
    end

    generate_reset_password_token!
    ::Devise.mailer.set_password_instructions(self).deliver
  end

Может кто-нибудь пролить светстранное поведение?
Похоже, Devise.mailer перезагружает Devise :: Mailer класс?

...