« migration における mysql の timestamp型 | メイン | rails で apache + fastcgi »

ActiveRecord 削除フラグで削除するプラグイン

[ruby] [rails] [rails_plugin] [plugin] [ActiveRecord]

acts_as_paranoid

このプラグインを導入すると、削除する際に、実際に行を消すのではなく、その行の deleted_at カラムに、削除の時間が記録されるようになります。

検索時にも、findで生成されるSQLのWHERE節に、以下のような条件が自動的に付加されます。


(users.deleted_at IS NULL OR users.deleted_at > '2007-01-21 12:27:07')

この条件を見ればわかりますが、削除予約といった使い方もできます。
フラグを条件に加えるのって、ついつい忘れてしまいがちなので便利です。

find_with_deleted メソッドで削除されたものも検索対象になります。

使い方は簡単。

まずはインストール。

./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

model に定義。

class User < ActiveRecord::Base
  acts_as_paranoid
end

参考URL

トラックバック

このエントリーのトラックバックURL:
http://i-am.web777.net/mt/mt-tb.cgi/18

コメントを投稿