Ruby on rails 3 在过滤器运行之前,mailer Rails 3

Ruby on rails 3 在过滤器运行之前,mailer Rails 3,ruby-on-rails-3,callback,actionmailer,before-filter,Ruby On Rails 3,Callback,Actionmailer,Before Filter,我需要什么: 类似于Rails 3中ActionMailer中的before_过滤器 问题: 我在Rails 3上工作,希望在ActionMailer中有一个before_过滤器。检查并了解了操作前和操作后回调。实施时,会出现以下错误: NoMethodError: undefined method `before_action' for Notifier:Class 后来了解到,Rails3在这方面并没有任何行动前的要求 没有任何钩子或宝石,这样我们就可以在Rails 3中使用类似于befo

我需要什么:

类似于Rails 3中ActionMailer中的before_过滤器

问题:

我在Rails 3上工作,希望在ActionMailer中有一个before_过滤器。检查并了解了操作前和操作后回调。实施时,会出现以下错误:

NoMethodError: undefined method `before_action' for Notifier:Class
后来了解到,Rails3在这方面并没有任何行动前的要求

没有任何钩子或宝石,这样我们就可以在Rails 3中使用类似于before_过滤器的东西


请帮忙。非常感谢

可以通过包含AbstractController::回调来实现。这模仿了对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
classmymailer
参考-

警告,在rails 3上(通过ActionMailer 3.2.21验证),在after_过滤器中调用“mail”再次调用ActionMailer::Base#mail。从3.2.21开始,“邮件”就不会被重复调用:您第一次传递的某些信息将是粘性的(例如正文),而其他信息则不是(例如主题)。引用“消息”而不是“邮件”更安全、更可靠。在上面的例子中,“mail.perform_deliveries=false”完成了任务(防止邮件发出),但也有副作用(将主题重置为默认值等)。