バリューオブジェクト
復習メモ。
バリューオブジェクトはActiveRecordの複数のカラムをオブジェクトにまとめたもの。
使い方
- 第一引数に、使用したいバリューオブジェクトを設定、取得するためのメソッド名を指定
- 第二引数はオプション。mappingでActiveRecordのカラムとバリューオブジェクトの属性をマッピングさせる。
composed_of :address, :mapping => [ %w(address_street street), %w(address_city city) ]
他のオプション
:class_name
デフォルトは、第一引数で指定したアクセサ名がバリューオブジェクトのクラス名になるけど、:class_nameで指定することも出来る。
:allow_nil
バリューオブジェクトにnilを設定できるようにする。nilを設定すると、マッピングされている全ての属性がnilになる
:constructor
コンストラクタのメソッド名かProcを指定する。バリューオブジェクトの初期化時に呼ばれる。全てのマッピングされたアトリビュートで実行される。その順序は:mappingオプションで指定した順序。デフォルトは:new
:converter
新しい値がバリューオブジェクトに割り当てられたときに呼ばれるメソッド名かProcを指定する。新しく割り当てられた値に対して実行される。新しい値が:class_nameで指定したインスタンスのときは呼ばれない。