ユーザーとイメージの2つのモデルがあります。
class User < ActiveRecord::Base
has_many :images,:order => "created_at DESC", :dependent => :destroy, :conditions => "archive = 0"
def destroy
self.archive = 1
self.deleted_at = Time.now
self.save
end
end
class Image < ActiveRecord::Base
belongs_to :user , :counter_cache => true
def destroy
self.archive = 1
self.deleted_at = Time.now
self.save
end
end
上記のコードが表示されている場合は、モデルのdestroy呼び出しをオーバーライドしています。ユーザーが自分のアカウントを削除しているときではなく、依存をトリガーしたい=>コールバックを破棄して、イメージの破棄をトリガーします。
PS:act_as_paranoidやその他のプラグインは使いたくありません。次のような非常に複雑なマッピングがあるため、dependent=>destroyをトリガーする必要があります。
ユーザーhas_many画像、has_manyコメント、has_manyいいね、has_manyアクティビティ、さらに9種類のマッピング、さらにディープマッピングなど。