21

ActiveRecord のcomposed_ofクラス メソッドはいつ使用する必要がありますか?

4

2 に答える 2

26

個人的には、これは、温度、GPS 位置、バランスなど、データベースに表示されているように、データベースに保存されていないオブジェクトがある場合に役立つと思います。

なぜそれらがデータベースに保存されないのですか? データベースには値を保存するだけですが、その値に有用で関連性のあるメソッドを追加したい場合は、

例えば

  1. 温度の場合to_fahrenheitto_celsiusis_boiling_point?、 などのメソッドが必要になる場合があります。

  2. GPS ロケーションの場合distance_from(point)route_to(point)、 などのメソッドが必要になる場合があります。

したがって、これらのオブジェクトのクラスを作成し、composed_of を使用してこれらのオブジェクトをその場で初期化できる場合は非常に便利です。

それが役立つことを願っています=)

于 2010-04-27T04:45:13.720 に答える
4

Moneycomposed_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 .

于 2011-11-12T10:46:23.150 に答える