【问题标题】:Which records are affected by ActiveRecord dependent: destroy?哪些记录受 ActiveRecord 依赖影响:销毁?
【发布时间】:2012-10-05 23:02:26
【问题描述】:

我有几个 ActiveRecord 对象,它们的关联标记为dependent: :destroy。当用户删除其中一个对象时,我想向他展示将(递归)删除的所有对象的列表。我如何获得这份清单?

我找到了affected_on_destroy gem here,但它还没有真正完成,似乎是 rails 2.2。是否有一些更新的 gem 或 rails 中的某些功能可以做到这一点?

【问题讨论】:

    标签: ruby-on-rails activerecord


    【解决方案1】:
    Class.reflect_on_all_associations.
      keep_if{ |assoc| assoc.options[:dependent] == :destroy }.map(&:name)
    

    这可能不是您想要的,但我认为reflect_on_all_associations 应该可以满足您的需求。

    【讨论】:

    • 这将是手工完成的方式,这也是 gem 的工作方式。但不知何故,我觉得应该有更好的方法,或者应该已经有人实现了。
    • 我见过的每一个处理依赖关联的宝石(不是很多,诚然)都以这种方式找到它们。这对我来说似乎是一个悬而未决的问题。
    【解决方案2】:

    我写了一个gem affected_by_destroy,源码可以在here找到。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-14
      • 1970-01-01
      • 1970-01-01
      • 2010-11-26
      • 2013-01-22
      相关资源
      最近更新 更多