54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
# 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
|