在过滤动作之前邮件程序Rails 3

时间:2013-07-10 08:27:53

标签: ruby-on-rails-3 callback actionmailer before-filter

我需要的是:

类似于Rails 3中ActionMailer中的before_filter。

问题:

我正在研究Rails 3,并希望在ActionMailer中有一个before_filter。检查了actionmailer api并了解了before_action和after_action回调。实施时,它会给出错误:

NoMethodError: undefined method `before_action' for Notifier:Class

后来了解到此post

之前没有针对Rails 3的操作调用

没有任何钩子或宝石,所以我们可以像Rails 3中的before_filter类似。

请帮忙。非常感谢!!

1 个答案:

答案 0 :(得分:11)

可以通过包含AbstractController :: Callbacks来实现。这模仿了Rails 4的变化,除了评论和测试之外,还包括Callbacks。

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?
     message.perform_deliveries = false
    end
    true
   end

end

参考 - How to add a before_filter in UserMailer which checks if it is OK to mail a user?