7

我需要的:

类似于 Rails 3 中 ActionMailer 中的 before_filter 的东西。

问题:

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

NoMethodError: undefined method `before_action' for Notifier:Class

后来了解到,从这篇文章中没有对 Rails 3 的 before action 调用

没有任何钩子或宝石,以便我们可以在 Rails 3 中拥有类似 before_filter 的东西。

请帮忙。非常感谢!!

4

1 回答 1

13

它可以通过包含 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?
     message.perform_deliveries = false
    end
    true
   end

end

参考 -如何在 UserMailer 中添加 before_filter 来检查是否可以向用户发送邮件?

于 2013-11-08T11:44:11.040 回答