ActiveRecord のcomposed_of
クラス メソッドはいつ使用する必要がありますか?
9335 次
2 に答える
26
個人的には、これは、温度、GPS 位置、バランスなど、データベースに表示されているように、データベースに保存されていないオブジェクトがある場合に役立つと思います。
なぜそれらがデータベースに保存されないのですか? データベースには値を保存するだけですが、その値に有用で関連性のあるメソッドを追加したい場合は、
例えば
温度の場合
to_fahrenheit
、to_celsius
、is_boiling_point?
、 などのメソッドが必要になる場合があります。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 に答える