1

我有一个我正在玩的新宝石,但我不确定将它放在哪里以便它被初始化,但我不必每次使用我使用它的方法时都这样做。

  def self.get_rate(from, to, amount)
    Money.default_bank.fetch_rates   #<---------------- Here it is...

    if to == "USD" or from == "USD"
      rate = Money.default_bank.get_rate(from, to) * amount
    else
      rate_to_us = Money.default_bank.get_rate(from, "USD") * amount
      rate = Money.default_bank.get_rate("USD", to) * rate_to_us
      #rate = Money.default_bank.get_rate(params[:currency][:from], "USD")
    end
    rate = Money.new(rate.to_money,to).format(:with_currency)
  end

我必须初始化它一次,否则它不会工作,但如果我现在这样做,它会加载一个 xml 文件和其他任何东西。我该怎么做才能让它每天只加载一次?

4

2 回答 2

2

Money gem 已经支持每隔这么多秒获取一次汇率。您可以将设置自动获取的代码放在您的 require.rb 文件 (RAILS_ROOT/config/initializers) 中。

Money.default_bank.auto_fetch 86400

来自金钱文档:

  Money.default_bank.fetch_rates          # Fetch the rates
  Money.default_bank.auto_fetch 3600      # Fetch the rates every hour
  Money.default_bank.stop_fetch           # Stop auto-fetch
于 2009-09-03T16:36:35.833 回答
0

将该逻辑放入 application.rb 并检查日期和时间。当日期更改时,重新启动初始化以更新汇率。

于 2009-09-03T14:38:31.203 回答