Rubyは、initialize
メソッドをオブジェクトのコンストラクターとして使用します。これはRuby言語の一部であり、Railsフレームワークに固有のものではありません。次のような新しいオブジェクトをインスタンス化すると呼び出されます。
@person = Person.new
new
でクラスレベルのメソッドを呼び出すClass
と、そのクラスのタイプが割り当てられ、オブジェクトのinitialize
メソッドが呼び出されます。
http://www.ruby-doc.org/core-1.9.3/Class.html#method-i-new
すべてのオブジェクトには、initialize
パラメーターを受け入れないデフォルトのメソッドがあります(パラメーターを作成する必要はありません。自動的に取得します)。オブジェクトでメソッド内で別のことを実行したい場合はinitialize
、独自のバージョンを定義する必要があります。
あなたの例では、とのデフォルト値を設定するために使用できるメソッドにハッシュを渡していinitialize
ます。@name
@email
次のように使用します。
@person = Person.new({name: 'John Appleseed', email: 'john@some.net'})
初期化子が属性のデフォルト値を持っている(attributes = {}
デフォルト値を十分なハッシュに設定する- {}
)理由は、引数を渡さなくても初期化子を呼び出すことができるようにするためです。引数を指定しない場合attributes
、は空のハッシュになり、したがって、これらのキー(および)に値が存在しないため、との両方が値@name
に@email
なります。nil
:name
:email