Составе в Rails - когда его использовать?
Когда вы должны использовать ActiveRecord composed_of
метод класса?
2 ответа
Лично я думаю, что это полезно, когда у вас есть объекты, которые не хранятся в базе данных, как показано в базе данных, например, температура, местоположение GPS, баланс и т. д.
Вы можете спросить, почему они не хранятся в базе данных? В базе данных мы храним только значение, но если мы хотим присоединить к этому значению полезные релевантные методы,
например
в случае температуры нам могут понадобиться такие методы, как
to_fahrenheit
,to_celsius
,is_boiling_point?
, так далеев случае местоположения GPS, нам могут понадобиться такие методы, как
distance_from(point)
,route_to(point)
, так далее
так что это довольно полезно, когда мы можем просто создать классы для этих объектов и использовать Comm_of для инициализации этих объектов на лету
надеюсь это поможет =)
Более сложный пример того, как использовать composed_of
с деньгами:
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.