module Mongoid::Callbacks
Public Instance Methods
cascadable_child?(kind, child, metadata)
click to toggle source
# File lib/patches/embedded_touch.rb, line 73 def cascadable_child?(kind, child, metadata) return false if kind == :initialize || kind == :find || kind == :touch return false if kind == :validate && metadata.validate? child.callback_executable?(kind) ? child.in_callback_state?(kind) : false end
cascadable_children(kind, children = Set.new)
click to toggle source
# File lib/patches/embedded_touch.rb, line 54 def cascadable_children(kind, children = Set.new) embedded_relations.each_pair do |name, metadata| next unless metadata.cascading_callbacks? without_autobuild do delayed_pulls = delayed_atomic_pulls[name] delayed_unsets = delayed_atomic_unsets[name] children.merge(delayed_pulls) if delayed_pulls children.merge(delayed_unsets) if delayed_unsets relation = send(name) Array.wrap(relation).each do |child| next if children.include?(child) children.add(child) if cascadable_child?(kind, child, metadata) child.send(:cascadable_children, kind, children) end end end children.to_a end