Rails アプリにはディープ クローン プロセスと、ツリーのノードとその子孫、およびそれらの関連付けを削除する再帰的な削除プロセスがあります。:touch => true が関係に適用されると、これらのルーチンの両方に問題があります。1 つのレコードを更新するだけで、関連付けとツリー構造のすべての親レコードに変更が適用される場合は問題ありませんが、一括作成または削除を扱う場合は、その呼び出しの間は接触を無効にするのが理にかなっています。
オブジェクトで touch メソッドをアクティブにしないコードを実行するためのブロックを受け入れるメソッドを定義する方法についての方向性を探しています。
私はグローバルを設定する必要があることを譲る直前に考えていますか?タッチが無効であることを示す変数を作成し、次に touch メソッドをオーバーライドして、super を呼び出す前にこの変数を最初にチェックします (場合によってはそうでない場合もあります)。
これを実際のコードに固める助けがあれば幸いです。:)