2009-09-03 100 views
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文件,任何其他。我怎么做才能每天只加载一次?

回答

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 
0

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