2. ActiveRecord(3)
2012/09/24 シナジーマーケティング(株) 鈴木 圭
Model 2章 ActiveRecord
- 2.1. ActiveRecord とは
- 2.2. モデルの定義
- 2.3. クエリとメソッドチェイン
- 2.4. オブジェクトの登録, 更新
- 2.5. オブジェクトの検索
- 2.6. オブジェクトの削除
- 2.7. まとめ
2.6. オブジェクトの削除
オブジェクトを削除するメソッドは大きく分けて destroy 系と delete 系の 2 種類あります。
destroy 系はコールバックが実行されますが、delete 系はコールバックを実行しません。
コールバックの詳細については別途解説しますが、
ActiveRecord ではオブジェクトの保存や削除のタイミングで実行されるコールバック処理を設定することができます。
例えば、ユーザのプロフィール画像をファイルシステム上に保存しているとします。
そして、削除時のコールバックでプロフィール画像を削除しているとします。
そのような場合は、コールバックが実行される destroy 系メソッドを使用します。
インスタンスメソッドの destroy, delete は、そのオブジェクトを削除します。
taro = User.where(:name => 'taro').first taro.destroy
クラスメソッドの destroy_all, delete_all は、全オブジェクトを削除します。
通常は where と組み合わせることで、特定の条件を満たす全オブジェクトを削除する、という使い方になるでしょう。
# Gmail ユーザを全て削除する. User.where('email LIKE ?', '%@gmail.com').destroy_all
2.7. まとめ
本章では ActiveRecord の基本について解説しましたが、他にも ActiveRecord には以下のような機能などがあります。
- バリデーション
モデルを保存する前に、設定された値が有効であることを検証する機能です。
例えば、メールアドレスとして設定された値が有効な形式であることの検証などを行うことができます。
- アソシエーション
複数のモデル間の関連を設定する機能です。
アソシエーションが提供するヘルパーメソッドを利用することで、簡潔かつ明快なコードを書くことができます。
- クエリ API
本章でもいくつか登場しましたが、他にもダイナミックファインダや集合演算、ロックや結合など、豊富な機能があります。
- コールバック
オブジェクトを保存するときやオブジェクトを削除するときなどに処理を行うための機能です。
データベース以外のリソースの作成や削除を行う場合などに便利な機能です。
- オブザーバ
デザインパターンのオブザーバパターンを実現する仕組みです。
これらの機能については、後の章で順次解説します。