4

Rails 2.2.2(ruby 1.8.7-p72)では、実際にオブジェクトを破壊する前に、オブジェクトを破壊した場合の影響を評価したいと思います。つまり、:dependent =>:destroyの影響を受けるすべてのオブジェクトのリストを(オブジェクトの関連付けを介して)生成できるようにしたいと思います。私が解決しようとしている本当の問題は、削除されるすべてのリストをユーザーに提供し、アクションを確認してもらうことです。

誰かがこれについて行くための良い方法をお勧めできますか?ActiveRecord :: Associationsを調べ始めたばかりですが、あまり進んでいません。

更新:私の特定のケースでは、さまざまなレベルのオブジェクトがあります(A-> B-> C)。

4

4 に答える 4

6

これはあなたが始めるのに役立つはずです...明らかにあなたはそれをカスタマイズする必要がありますが、これはクラスBlogEntryに依存するすべてのアソシエーション名をリストします:

BlogEntry.reflect_on_all_associations.map do |association|
  if association.options[:dependent] == :destroy
    # do something here...
    association.name
  end
end.compact
=> [:taggings, :comments]
于 2009-04-27T14:26:26.257 に答える
1

依存するdestroyを使用して関連付けられたオブジェクトのリストを手動で維持し(おそらくとにかくやること)、次に、それぞれにnamed_scopesを設定して、含まれているオブジェクトをプルして表示します。

于 2009-04-26T22:45:25.957 に答える
0

前述のように、影響を受けるレコードをユーザーに表示する方法があり、2つのボタン/リンクがあります。1つは削除で、もう1つのリンクをチェックしたかどうかを尋ねるユーザーへの確認アラートがあります。それらが影響を与えるすべてのレコードのリスト。

次に、データベースで削除済みとしてマークすることでソフト削除を実行できることを本当に確認したい場合は、実際に削除するのではなく、便利な場合があります。自動依存でそれをどのように処理するかわかりません。おそらくacts_as_paranoidを使用して削除するか、親モデルでコールバックを使用するある種のセルフロールバージョンを使用します。

于 2009-04-27T03:19:30.150 に答える
0

最近、この問題を解決する簡単なRailsプラグインを作成しました。
githubでチェックしてください:http://github.com/murbanski/affected_on_destroy/tree

于 2009-06-26T15:08:02.470 に答える