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

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

2 ответа

Решение

Лично я думаю, что это полезно, когда у вас есть объекты, которые не хранятся в базе данных, как показано в базе данных, например, температура, местоположение GPS, баланс и т. д.

Вы можете спросить, почему они не хранятся в базе данных? В базе данных мы храним только значение, но если мы хотим присоединить к этому значению полезные релевантные методы,

например

  1. в случае температуры нам могут понадобиться такие методы, как to_fahrenheit, to_celsius, is_boiling_point?, так далее

  2. в случае местоположения 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.

Другие вопросы по тегам