我有一个新的宝石我正在玩,但我不知道在哪里放它以便它被初始化,但我不必每次都这样做我每次使用我的方法使用它
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文件和其他任何东西。我怎么能这样做它每天只加载一次?
答案 0 :(得分:2)
Money gem已经支持每隔很多秒获取汇率。您可以将代码设置为在require.rb文件中设置自动提取(RAILS_ROOT / config / initializers)。
Money.default_bank.auto_fetch 86400
来自Money文档:
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
答案 1 :(得分:0)
将该逻辑放入application.rb并检查日期和时间。当日期发生变化时,请重新启动初始化以更新汇率。