tyoshikawa1106のブログ

- Force.com Developer Blog -

Rails:modelファイルとユーザオブジェクト

Railsチュートリアルの第六章です。前回ユーザモデルの作成とマイグレーションについて試したので今回はその続きでRailsのモデルについてです。


Railsのモデルファイルはapp/modelsフォルダ内に格納されます。
f:id:tyoshikawa1106:20150803112154p:plain:w400


class User < ActiveRecord::Baseという構文で、UserクラスはActiveRecord::Baseを継承するので、Userモデルは自動的にActiveRecord::Baseクラスのすべての機能を持ちます。

ユーザーオブジェクトを作成する

第4章と同じく、Railsコンソールを使用してデータモデルを調べてみましょう。現時点ではデータベースを変更したくないので、コンソールをサンドボックスモードで起動します。

$ rails console --sandbox

この方法で実行すると、作業終了時に結果がロールバックされるようになります。
f:id:tyoshikawa1106:20150803112507p:plain:w400


User.newを実行することで、ユーザーオブジェクトを作成できます。
f:id:tyoshikawa1106:20150803113241p:plain


引数なしで実行すると上記のように全ての属性がnilになります。次のように引数を指定することで初期値がセットされます。

user = User.new(name: "Michael Hartl", email: "mhartl@example.com")

f:id:tyoshikawa1106:20150803113501p:plain


User.newを実行するとユーザオブジェクトは作成されますが、DBには保存されていません。これを保存するにはuser変数に対してsaveメソッドを呼びます。

user.save

f:id:tyoshikawa1106:20150803113735p:plain


saveメソッドは、成功すればtrueを、失敗すればfalseを返します。saveメソッド実行後、user変数を見てみるとid属性に値が登録されていることを確認できます。
f:id:tyoshikawa1106:20150803114049p:plain


各属性はドットをつかってアクセスできます。
f:id:tyoshikawa1106:20150803114235p:plain


Railsのオブジェクト作成は「new」と「save」の2ステップで行われています。ただし、Active RecordではUser.createでモデルの生成と保存を同時におこなう方法も提供されています。

>> User.create(name: "A Nother", email: "another@example.org")

f:id:tyoshikawa1106:20150803114547p:plain


User.createは、trueかfalseを返す代わりに、ユーザーオブジェクト自身を返すようになっています。


destroyはcreateの逆です。
f:id:tyoshikawa1106:20150803114716p:plain

奇妙なことに、destroyはcreateと同じようにそのオブジェクト自身を返しますが、その返り値を使用しても、もう一度destroyを呼ぶことはできません。そして、おそらくさらに奇妙なことに、destroyされたオブジェクトは以下のようにまだメモリ上に残っています。

f:id:tyoshikawa1106:20150803114742p:plain