2009-09-03 4 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ファイルをロードし、それ以外のものは何でも。 1日に1回しかロードされないようにするにはどうすればいいですか?

答えて

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に入れ、日付と時刻をチェックします。日が変わったら、初期化を再開して為替レートを更新します。

関連する問題