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回だけ読み込まれるようにするにはどうすればよいですか?

4

2 に答える 2

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
于 2009-09-03T16:36:35.833 に答える
0

そのロジックを、日付と時刻のチェックとともにapplication.rbに配置します。日が変わったら、初期化を再開して為替レートを更新します。

于 2009-09-03T14:38:31.203 に答える