2013-07-13 25 views
6

Tôi muốn có thể đặt đơn vị tiền tệ trên mô hình động bằng cách sử dụng đơn vị tiền tệ như được đặt bởi cha mẹ của mô hình.sử dụng lambda hoặc proc và rails-money

Giống như vậy:

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

event.edition.currency trả về một biểu tượng từ cha mẹ của mô hình ... ví dụ : gbp

Nhưng nó không hoạt động. Quy ước mặc định là:

monetize :bonus_cents, :with_currency => :gbp 

Làm việc tốt ... bất kỳ ý tưởng nào?

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

+0

Tôi gặp vấn đề tương tự. Bạn đã tìm thấy một giải pháp? –

Trả lời

2

Hãy thử điều này:

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

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

tôi không kiểm tra kỹ, nhưng có vẻ như để làm việc.

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

Dường như hoạt động trước khi lưu, nhưng sau khi lưu bản ghi vẫn được đặt thành loại tiền mặc định. ;-( – ere

Các vấn đề liên quan