Rails 3.2干不了这个Action Mailer

Rails 3.2 can't dry up this Action Mailer

出于营销目的,我需要在我的 UserMailer 中的大约 15 个操作邮件程序方法中使用一个名为 @template_name 的实例变量。我不想到处乱扔东西,例如:

@template_name  = __callee__

在我所有的方法中,或者在视图中删除字符串,我想尽可能地做到 DRY。创建一个可以访问方法名称而不是其本身的回调似乎具有挑战性,即这个 return "do_thing" 不管它从什么方法触发。

before_action :do_thing
def do_thing
  __callee__ # old way was __method__ 
end

非常欢迎任何建议!

查看 this post。

如果我没理解错的话,您可以简单地执行以下操作:

Rails > 4

before_action { @template_name = action_name }

Rails < 4

  include AbstractController::Callbacks
  before_action { @template_name = action_name }