module Mongoid::TouchParentsRecursively

Public Instance Methods

touch_parents_recursively() click to toggle source
# File lib/mongoid_touch_parents_recursively.rb, line 17
def touch_parents_recursively
  # cache @__parents
  @__parents ||= begin
    __parents = Set.new

    # 按 @diyumoshushi 建议,CRUD需要通知到所有关联的父级对象,包括多对多,这样可以兼容被删除的情况。
    # @mvj3 但是只在第一级就可兼容多对多情况下被删除的情况。因为关联的第二级以上就没有被删除了。
    # 根本解决的是 **引用的问题**,去通知位于顶级的subject去更新。
    Utils.fetch_and_store_parent __parents, self, true
  end

  @__parents.each(&:touch)
end