module Mongoid::TouchParentsRecursively::Utils
put encapsulation method here
Public Class Methods
fetch_and_store_parent(__parents, __parent, is_first_level)
click to toggle source
# File lib/mongoid_touch_parents_recursively.rb, line 35 def self.fetch_and_store_parent __parents, __parent, is_first_level # parents 可能的是 has_and_belongs_to_many or belongs_to Array(__parent).each do |__parent1| # compact with Mongoid::Relations::Targets::Enumerable as Enumerable __parent1.class.relations.select do |k, v| __result = false __result ||= (v.macro == :belongs_to) __result ||= (k.match(__parent1.class.name.singularize.downcase) && (v.macro != :embeds_many)) if is_first_level __result = false if not ::Mongoid::TouchParentsRecursively.allowed_models_proc.call(v.class_name) __result end.map do |k, v| Array(__parent1.send(k)) end.flatten.each do |__parent2| if not __parents.include? __parent2 __parents.add __parent2 Utils.fetch_and_store_parent __parents, __parent2, false end end end return __parents end