2013-07-13 34 views
6

Chcę móc ustawić walutę na modelu dynamicznie za pomocą waluty ustawionej przez rodzica modelu.za pomocą lambda lub proc i szyn-pieniędzy

tak:

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

event.edition.currency zwraca symbol z modelu rodzic ... np : gbp

Ale to nie działa. Domyślna konwencja to:

monetize :bonus_cents, :with_currency => :gbp 

Która działa dobrze ... jakieś pomysły?

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

+0

Mam ten sam problem. Znalazłeś rozwiązanie? –

Odpowiedz

2

Spróbuj tego:

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

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

nie przetestować go dokładnie, ale wydaje się działać.

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

Wygląda na to, że działa przed zapisaniem, ale po zapisaniu rekord nadal jest ustawiony na domyślną walutę. ;-( – ere