【问题标题】:Evaluating :dependent => :destroy评估 :dependent => :destroy
【发布时间】:2010-10-21 23:03:05
【问题描述】:

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

谁能推荐一个解决这个问题的好方法?我刚刚开始研究 ActiveRecord::Associations,但进展不大。

更新:在我的特殊情况下,我有不同级别的对象(A --> B --> C)。

【问题讨论】:

    标签: ruby-on-rails ruby activerecord associations


    【解决方案1】:

    这应该可以帮助您入门...显然您必须对其进行自定义,但这列出了依赖于类 BlogEntry 销毁的所有关联名称:

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

    【讨论】:

    【解决方案2】:

    只需手动维护一个关联对象的列表,其中包含相关的销毁(无论如何可能都是要做的事情),然后为每个对象设置 named_scopes 以拉入包含的对象以进行显示。

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 2011-02-17
          • 1970-01-01
          • 1970-01-01
          • 2011-08-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多