Как добавить before_filter в UserMailer, который проверяет, можно ли отправлять почту пользователю?

есть ли глобальный способ написать before_filter для моего пользовательского почтовика, который проверяет, отключена ли у пользователя электронная почта? Сейчас каждый мой мейлер проверяет настройки пользователя, это очень избыточно. Я хотел бы упростить эту работу, имея before_filter, который работает для всех почтовых программ.

class UserMailer < ActionMailer::Base

 before_filter :check_if_we_can_mail_the_user

 ....

 private

   def check_if_we_can_mail_the_user
     if current_user.mail_me == true
       #continue
     else
      Do something to stop the controller from continuing to mail out
     end
   end
 end

Возможно ли это? Кто-нибудь делал что-то подобное? Спасибо

24
задан AnApprentice 21 December 2011 в 18:33
поделиться

2 ответа

Rails 4 уже имеет обратные вызовы before_filter и after_filter. Для пользователей Rails 3 добавить их на удивление просто: просто включите AbstractController :: Callbacks. Это имитирует изменение в Rails 4 , которое, кроме комментариев и тестов, просто включало обратные вызовы.

class MyMailer < ActionMailer::Base
  include AbstractController::Callbacks

  after_filter :check_email

  def some_mail_action(user)
    @user = user
    ...
  end

  private
  def check_email
    if @user.email.nil?
      mail.perform_deliveries = false
    end
    true
  end

end
30
ответ дан 28 November 2019 в 23:48
поделиться

Может быть, проверить https://github.com/kelyar/mailer_callbacks . Похоже, он будет делать то, что вы хотите.

0
ответ дан 28 November 2019 в 23:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: