Quand devez-vous utiliser la fonction composed_of
méthode de classe ?
Réponses
Trop de publicités?Personnellement, je pense que cela est utile lorsque vous avez des objets qui ne sont pas stockés dans la base de données, mais qui sont affichés dans la base de données, par exemple la température, la position GPS, la balance, etc.
Vous pourriez alors vous demander pourquoi ces données ne sont pas stockées dans la base de données ? Dans la base de données, nous ne stockons qu'une valeur, mais si nous voulons attacher des méthodes utiles et pertinentes à cette valeur,
par exemple
-
dans le cas de la température, nous pourrions avoir besoin de méthodes telles que
to_fahrenheit
,to_celsius
,is_boiling_point?
, etc. -
dans le cas de la localisation par GPS, nous pourrions avoir besoin de méthodes telles que
distance_from(point)
,route_to(point)
, etc.
il est donc très utile de pouvoir créer les classes pour ces objets, et d'utiliser composed_of pour initialiser ces objets à la volée
J'espère que cela vous aidera =)
Un exemple plus complexe de l'utilisation de composed_of
con L'argent :
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") }
Source : github wiki .