评估:依赖=>:销毁

在Rails 2.2.2(ruby 1.8.7-p72)中,我想评估在实际执行之前销毁对象的影响。 即我希望能够生成一个受以下因素影响的所有对象的列表:dependent =>:destroy(通过对象的关联)。 我试图解决的真正问题是向用户提供将要删除的所有内容的列表,并让他们确认操作。

任何人都可以推荐一个好方法来解决这个问题吗? 我刚刚开始研究ActiveRecord :: Associations,但我没有取得多大进展。

更新:在我的特定情况下,我有各种级别的对象(A – > B – > C)。

这应该有助于你开始…显然你将不得不自定义它,但这列出了类BlogEntry上依赖销毁的所有关联名称:

BlogEntry.reflect_on_all_associations.map do |association| if association.options[:dependent] == :destroy # do something here... association.name end end.compact => [:taggings, :comments] 

只需手动维护一个具有依赖destroy的关联对象列表(可能还是要做的事情),然后为每个对象提供named_scopes以拉入要显示的包含对象。

我要说的是,如上所述,有一种方法可以向用户显示受影响的记录,然后有两个按钮/链接,一个是删除,可能是用户的确认警报,询问他们是否检查了另一个链接是他们将影响的所有记录的列表。

然后,如果你想确定你也可以通过在数据库中将它们标记为已删除来进行软删除而不是实际删除它们可能会派上用场,我不知道你将如何处理自动依赖删除,可能是acts_as_paranoid,或某种自动滚动版本,在父模型上有回调。

最近我写了一个简单的Rails插件来解决这个问题。
在github上查看: http//github.com/murbanski/affected_on_destroy/tree