Когда вы должны использовать метод класса ActiveRecord composed_of
?
Created_of в Rails - когда его использовать?
Ответ 1
лично, я думаю, что это полезно, когда у вас есть объекты, которые не хранятся в базе данных, как показано в базе данных, например. температура, местоположение GPS, баланс и т.д.
Тогда вы можете спросить, почему они не хранятся в базе данных? В базе данных мы сохраняем только значение, но если мы хотим приложить полезные, соответствующие методы к этому значению,
например,
-
в случае температуры нам могут понадобиться такие методы, как
to_fahrenheit
,to_celsius
,is_boiling_point?
и т.д. -
в случае расположения gps нам могут понадобиться такие методы, как
distance_from(point)
,route_to(point)
и т.д.
поэтому он очень полезен, когда мы можем просто создавать классы для этих объектов и использовать configure_of для инициализации этих объектов на лету
надеюсь, что это поможет =)
Ответ 2
Более сложный пример использования composed_of
с Money:
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) },
:converter => Proc.new { |value| value.respond_to?(:to_money) ? value.to_money : raise(ArgumentError, "Can't convert #{value.class} to Money") }
Источник: github wiki.