2009-09-03 155 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中,同時檢查日期和時間。當一天變化時,重新啓動初始化以更新匯率。