「acts_as_paranoidプラグイン」の編集履歴(バックアップ)一覧はこちら
追加された行は緑色になります。
削除された行は赤色になります。
**プラグイン名
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)と使う
でもちょっとバグいので、[[DoRuby|Ruby on Railsでacts_as_paranoidを使い倒す>>http://doruby.kbmj.com/x5r_on_rails/20080214/Ruby_on_Rails_acts_as_paranoid_]]を参考にするのがいいかも。
**公式ページ
-[[公式>>http://ar-paranoid.rubyforge.org/]]
**日本語解説ページ
-[[マルッと!|ActiveRecord 削除フラグで削除するプラグイン>>http://i-am.web777.net/2007/01/activerecord.html]]
※基本的な使い方はこれでOK
-[[DoRuby|Ruby on Railsでacts_as_paranoidを使い倒す>>http://doruby.kbmj.com/x5r_on_rails/20080214/Ruby_on_Rails_acts_as_paranoid_]]
※Rails2.0への対応の悪影響や、バグのパッチを公表しています
**外国語解説ページ
-まだ見つけてない
**のうはう
-AR.find_with_deletedまたはAR.find(..., :with_deleted => true)で削除済みのものが検索対象に入るようなんだけど、バグっていてエラーになる。
[[Rails開発日記|論理削除プラグイン(バグ修正)>>http://underrails.seesaa.net/article/58712907.html]]この記事を参考に回避する必要あり。
**コメント
#pcomment(reply)
**プラグイン名
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)と使う
でもちょっとバグいので、[[DoRuby|Ruby on Railsでacts_as_paranoidを使い倒す>>http://doruby.kbmj.com/x5r_on_rails/20080214/Ruby_on_Rails_acts_as_paranoid_]]を参考にするのがいいかも。
**公式ページ
-[[公式>>http://ar-paranoid.rubyforge.org/]]
**日本語解説ページ
-[[マルッと!|ActiveRecord 削除フラグで削除するプラグイン>>http://i-am.web777.net/2007/01/activerecord.html]]
※基本的な使い方はこれでOK
-[[DoRuby|Ruby on Railsでacts_as_paranoidを使い倒す>>http://doruby.kbmj.com/x5r_on_rails/20080214/Ruby_on_Rails_acts_as_paranoid_]]
※Rails2.0への対応の悪影響や、バグのパッチを公表しています
**外国語解説ページ
-まだ見つけてない
**のうはう
-AR.find_with_deletedまたはAR.find(..., :with_deleted => true)で削除済みのものが検索対象に入るようなんだけど、バグっていてエラーになる。
[[Rails開発日記|論理削除プラグイン(バグ修正)>>http://underrails.seesaa.net/article/58712907.html]]この記事を参考に回避する必要あり。
あと上にも書いたけど[[DoRuby|Ruby on Railsでacts_as_paranoidを使い倒す>>http://doruby.kbmj.com/x5r_on_rails/20080214/Ruby_on_Rails_acts_as_paranoid_]]とか。
**コメント
#pcomment(reply)