2013-07-13 4 views
6

モデルの親によって設定された通貨を使用して、モデルに通貨を動的に設定できます。ラムダまたはprocとrails-moneyを使用

ので、同じように:

class Event < ActiveRecord::Base 
    belongs_to :edition 
    monetize :price_cents, :with_currency => proc { |event| event.edition.currency } 

event.edition.currencyは、モデルの親からシンボルを返す...例えば:gbp

しかし、動作しません。デフォルトの規約は次のとおりです。

monetize :bonus_cents, :with_currency => :gbp 

どのようなアイデアですか?

https://github.com/RubyMoney/money-rails

+0

私は同じ問題を抱えています。あなたは解決策を見つけましたか? –

答えて

2

これを試してみてください:

class Event < ActiveRecord::Base 
    belongs_to :edition 
    monetize :price_cents 

    def currency_for_price 
    Money::Currency.find(edition.currency) 
    end 
end 

私は徹底的にテストしていないが、動作しているようです。

2.0.0-p195 :012 > Event.new(
         edition: Edition.new(currency: :gbp), 
         price: 123 
       ).price 
=> #<Money fractional:12300 currency:GBP> 
2.0.0-p195 :013 > Event.new(
         edition: Edition.new(currency: :usd), 
         price: 456 
       ).price 
=> #<Money fractional:45600 currency:USD> 
+0

保存する前に動作するようですが、保存後もレコードはデフォルトの通貨に設定されます。 ;-( – ere

関連する問題