#ruby-on-rails #devise #invitation
#ruby-on-rails #devise #приглашение
Вопрос:
В devise invitable приглашение! метод выполняет следующее:
def invite!
if new_record? || invited?
self.skip_confirmation! if self.new_record? amp;amp; self.respond_to?(:skip_confirmation!)
generate_invitation_token if self.invitation_token.nil?
self.invitation_sent_at = Time.now.utc
save(:validate => false)
::Devise.mailer.invitation_instructions(self).deliver
end
end
Однако, поскольку я хотел, чтобы devise использовала PostageApp, я создал новую программу под названием new_devise_mailer.rb, которая в основном такая же, как devise mailer, но наследует PostageApp.
В файле config / initialization /devise.rb я установил config.mailer = «NewDeviseMailer» вместо «Devise:Mailer».
Как модуль invitable может узнать, что нужно использовать новую программу рассылки?
Ответ №1:
Модуль invitable должен использоваться автоматически, NewDeviseMailer
поскольку он вызывает Devise.mailer
, а не Devise::Mailer
и вы изменили программу рассылки по умолчанию в инициализаторе.
Комментарии:
1. хорошо, я понимаю, итак, Devise.mailer укажет на NewDeviseMailer . Должен ли NewDeviseMailer наследовать DeviseMailer, или я могу поступить так, как я описал, то есть использовать те же методы, но он наследуется от PostageApp, а не от ActionMailer?
2. Из того, что я понимаю из этого обсуждения , я думаю, вы могли бы попробовать
class NewDeviseMailer < PostageApp::Mailer
и сделать что-то вродеextend Devise::Mailer
, чтобы сделать доступными методы класса Devise mailer.