プラグイン名
acts_as_paranoidプラグイン
このプラグインができること
- やりたいことは理論削除。よくdelete_flag(boolean)などとしてフラグが立っていたら削除済みとして扱っていたようなものを、半自動化する。
- destroyで本当に削除するのではなく、deleted_atカラムにタイムスタンプを入れるようにする。
- find系メソッドを書き換えて、deleted_atカラムにタイムスタンプが入ってないものだけを検索対象とする
- 削除済みのものだけ、削除済みのものとそうでないものを含めた検索も可能
対象バージョン
1.2系 2.0系
ちょー簡単な使い方
./script/plugin install acts_as_paranoid
でインストールして、
class AddDeletedAt < ActiveRecord::Migration
def self.up
add_column users, :deleted_at, :datetime
end
def self.down
remove_column :users, :deleted_at
end
end
こんな感じでdeleted_atカラムを追加し、マイグレートできたらモデルに
class User < ActiveRecord::Base
acts_as_paranoid
end
てな具合に使用を宣言する。
すると、
- destroyメソッドで削除ではなくdeleted_atを埋めるようになり
- findメソッドでdeleted_atがnullのものだけ対象にするようになり
- 削除済みも含めて何かしたいときはfind_with_deletedメソッドを使うか、
- User.find(:all, :with_deleted => true)と使う
公式ページ
日本語解説ページ
※基本的な使い方はこれでOK
※Rails2.0への対応の悪影響や、バグのパッチを公表しています
外国語解説ページ
のうはう
- AR.find_with_deletedまたはAR.find(..., :with_deleted => true)で削除済みのものが検索対象に入るようなんだけど、バグっていてエラーになる。
コメント
最終更新:2008年03月11日 21:55