2009-04-26 18 views
4

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

誰でもこのことについて良い方法をお勧めしますか?私はActiveRecord :: Associationsを見始めたばかりですが、あまり進んでいません。

更新:私の場合、私はさまざまなレベルのオブジェクトを持っています(A→B→C)。

答えて

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] 
+0

私はそれを知っていませんでした! http://api.rubyonrails.org/classes/ActiveRecord/Reflection/ClassMethods.html – marcgg

+0

ありがとう!反射は便利です。 –

1

関連するオブジェクトのリストを従属的な破壊(とにかくやるべきこと)と手動で維持し、それぞれの名前付きスコープを使用して、表示するオブジェクトをプルする必要があります。

0

私は、前述のように、影響を受けたレコードをユーザーに表示する方法を持っていると言いたいのですが、2つのボタン/リンク、1つは削除、おそらくユーザーに確認の警告が表示されます他のリンクは影響を受けるすべてのレコードのリストです。

あなたが実際に便利であるかもしれないそれらを実際に削除するのではなく、データベースで削除されたものとしてマークすることによってソフト削除を行うことができるのであれば、私はあなたがそれをどう扱うかわかりません自動従属削除では、acts_as_paranoid、または親モデルでコールバックを持つ何らかの種類の自己ロールバージョンを使用している可能性があります。

関連する問題