来自帮助者的delayed_job和方法

时间:2014-07-22 06:03:02

标签: ruby-on-rails ruby email delayed-job actionview

我的应用程序中存在使用电子邮件模板中的帮助程序的问题。在我的应用程序中,我实现了" money-rails"处理其他货币的付款。我有以下帮助:

module CurrencyHelper

  # overriding std rails helper to use 'money' gem methods
  def number_to_currency(money, options = {})
    return '-' unless money
    currency = options.fetch(:currency, current_currency)
    date = options.fetch(:date, nil)
    should_reload = if date && !money.currency.eql?(currency)
                      ExchangeRatesManager.new(date: date).call
                    end

    money_in_currency = money.exchange_to(currency)
    ExchangeRatesManager.new.call if should_reload # should rollback to current exchange rates

    humanized_money_with_symbol(money_in_currency)
  end

end

现在我在我的电子邮件邮件模板中使用它。当我不通过delayed_job发送邮件时,一切正常:

UserMailer.reservation_confirmation_link(@reservation).deliver

但是当我通过delayed_job发送电子邮件时: RentalOfficeMailer.delay.reservation_summary(@reservation)它没有加载这个被覆盖的number_to_currency方法,它没有显示我正确的货币。 提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

我有同样的问题,帮助器没有在后台加载,我通过这种方式调用helper方法解决了这个问题,在你的情况下你可以这样做:

Class.new.extend(CurrencyHelper).number_to_currency(money, {})