Подтвердить что ты не робот

Created_of в Rails - когда его использовать?

Когда вы должны использовать метод класса ActiveRecord composed_of?

4b9b3361

Ответ 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.