2013-07-13 4 views
6

Ich möchte in der Lage sein, die Währung auf dem Modell dynamisch mit der Währung wie vom übergeordneten Modell festgelegt festlegen.mit einem Lambda oder Proc und Rails-Geld

Wie so:

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

event.edition.currency ein Symbol des aus dem Modell Eltern zurückkehrt ... z : gbp

Aber es funktioniert nicht. Die Standardkonvention ist:

monetize :bonus_cents, :with_currency => :gbp 

Was funktioniert gut ... irgendwelche Ideen?

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

+0

Ich habe das gleiche Problem. Hast du eine Lösung gefunden? –

Antwort

2

Try this:

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

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

ich es nicht gründlich getestet haben, aber es scheint zu funktionieren.

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

Es scheint vor dem Speichern zu funktionieren, aber nach dem Speichern wird der Datensatz immer noch auf die Standardwährung gesetzt. ;-( – ere

Verwandte Themen