ruby-on-rails - 在 Action Mailer 中设置实例变量?

标签 ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4 actionmailer

我想知道在 Mailers 中设置实例变量的简洁且传统的方法是什么?目前,我已经在 Mailer 中重新定义了 initialize 方法,随后在任何继承自 Mailer 的邮件程序中需要时覆盖某些实例变量。

class Mailer < ActionMailer::Base
  attr_reader :ivar

  def initialize
    super
    @ivar = :blah
    ...
  end
end

这对我来说似乎很奇怪,因为 new 是邮件程序的私有(private)方法。例如,如果我要尝试在 Rails 控制台中检索这些内容,我需要执行以下操作:

mailer = Mailer.send(:new)
mailer.ivar

我还考虑过将它们添加到 default 散列中,如下所示:

class Mailer < ActionMailer::Base
  default ivar: :blah,
  ...
end

唯一的问题是我需要创建一个这样的方法来检索 ivars:

def default_getter(ivar)
  self.class.default[ivar]
end

对我来说,这两种方式似乎都特别干净。我考虑过使用类变量,但我想知道是否有人可以建议一种更简洁的方法。谢谢。

最佳答案

只是晚了一点...

您可以使用 before_action 回调

http://guides.rubyonrails.org/action_mailer_basics.html#action-mailer-callbacks

关于ruby-on-rails - 在 Action Mailer 中设置实例变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19236674/

相关文章:

ruby-on-rails-3 - Rails 3:如何验证是否允许空白(“”,但不允许nil(数据库中为NULL)

html - 如何将 HTML/CSS 代码插入 iframe?

ruby-on-rails - ruby rails 4.0.4 : How do I set up the Environment Variables?

ruby - Nokogiri 中的 .at_css 和 .css 有什么区别?

ruby-on-rails - 按预定顺序加载 CSS 文件

ruby - 设计不允许事件资源访问服务

ruby-on-rails-3 - 如何在消费者中使用omniauth和oauth2注入(inject)http_authorization header ,以便在提供者中进行身份验证?

JavaScript 调用方法不适用于 OwlCarousel-Rails

ruby-on-rails - 如何在初始化文件中获取域 url,rails

ruby-on-rails - activeadmin 自定义页面上的 Pundit 授权