6

このアプリケーションでは、ActiveRecordのdestroyメソッドをオーバーライドして、レコードが削除されないようにしました(ユーザーが削除を取り消すことができるようにします)。そのようです:

def destroy
  self.is_deleted = true
  self.save
  freeze
end

しかし、これは私たちの関係に依存する破壊を無効にしたようhas_manyです。つまり、destroyが親オブジェクトで呼び出された場合、の子オブジェクトはhas_many破棄されません(つまり、SQL' DELETE...'が削除されたり、オーバーライドされたメソッドが呼び出されたりすることはありませんdestroy)。

子オブジェクトの破棄をトリガーするにはどうすればよいですか。

ありがとう!

4

1 に答える 1

6

destroy コールバックをトリガーする必要があります。

def destroy
  self.is_deleted = true
  self.save
  run_callbacks :destroy
  freeze
end
于 2012-10-31T12:40:01.690 に答える