-
Notifications
You must be signed in to change notification settings - Fork 621
Ruby on Rails (Money.gem 2.3.* and later)
semmons99 edited this page Apr 9, 2012
·
3 revisions
Use the #composed_of
helper to let Active Record deal with embedding the money object in your models. The following example requires a cents
and a currency
field.
composed_of :price,
:class_name => "Money",
:mapping => [%w(cents cents), %w(currency currency_as_string)],
:constructor => Proc.new { |cents, currency| Money.new(cents || 0, currency || Money.default_currency) }
Also, because the currency
attribute is not a simple String
but a Money::Currency
object, you need a small tweak to make it work.
Extend/hack the Money
class with two additional methods:
# You can put this file in the config/initializers/ folder
class Money
def currency_as_string
currency.to_s
end
def currency_as_string=(value)
# WARNING: this method might cause data inconsistency.
# See https://github.com/RubyMoney/money/issues/4#issuecomment-224883
# currency = Currency.wrap(value)
end
end