Railsチュートリアルの第六章です。前回ユーザモデルの作成とマイグレーションについて試したので今回はその続きでRailsのモデルについてです。
Railsのモデルファイルはapp/modelsフォルダ内に格納されます。
class User < ActiveRecord::Baseという構文で、UserクラスはActiveRecord::Baseを継承するので、Userモデルは自動的にActiveRecord::Baseクラスのすべての機能を持ちます。
ユーザーオブジェクトを作成する
第4章と同じく、Railsコンソールを使用してデータモデルを調べてみましょう。現時点ではデータベースを変更したくないので、コンソールをサンドボックスモードで起動します。
$ rails console --sandbox
この方法で実行すると、作業終了時に結果がロールバックされるようになります。
User.newを実行することで、ユーザーオブジェクトを作成できます。
引数なしで実行すると上記のように全ての属性がnilになります。次のように引数を指定することで初期値がセットされます。
user = User.new(name: "Michael Hartl", email: "mhartl@example.com")
User.newを実行するとユーザオブジェクトは作成されますが、DBには保存されていません。これを保存するにはuser変数に対してsaveメソッドを呼びます。
user.save
saveメソッドは、成功すればtrueを、失敗すればfalseを返します。saveメソッド実行後、user変数を見てみるとid属性に値が登録されていることを確認できます。
各属性はドットをつかってアクセスできます。
Railsのオブジェクト作成は「new」と「save」の2ステップで行われています。ただし、Active RecordではUser.createでモデルの生成と保存を同時におこなう方法も提供されています。
>> User.create(name: "A Nother", email: "another@example.org")
User.createは、trueかfalseを返す代わりに、ユーザーオブジェクト自身を返すようになっています。
destroyはcreateの逆です。
奇妙なことに、destroyはcreateと同じようにそのオブジェクト自身を返しますが、その返り値を使用しても、もう一度destroyを呼ぶことはできません。そして、おそらくさらに奇妙なことに、destroyされたオブジェクトは以下のようにまだメモリ上に残っています。