21

什么时候应该使用 ActiveRecord 的composed_of类方法?

4

2 回答 2

26

就个人而言,我认为当您有未存储在数据库中的对象时,这很有用,如数据库中所示,例如温度、gps 位置、平衡等。

你可能会问为什么那些不存储在数据库中?在数据库中,我们只存储一个值,但如果我们想为该值附加有用的相关方法,

例如

  1. 在温度的情况下,我们可能需要像to_fahrenheit, to_celsius, is_boiling_point?, 等等这样的方法

  2. 在 GPS 定位的情况下,我们可能需要诸如distance_from(point),route_to(point)等方法

因此,当我们可以为这些对象创建类并使用composer_of动态初始化这些对象时,它非常有用

希望它有帮助 =)

于 2010-04-27T04:45:13.720 回答
4

如何使用 Money 的更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 维基

于 2011-11-12T10:46:23.150 回答