module CanvasSync::Concerns::Account::Ancestry
def ancestry_after_sync
def ancestry_after_sync trails = {} includes(:canvas_parent).find_each do |account| parent = account.canvas_parent trail = trails[parent.canvas_id] if parent.present? if trail.present? account.ancestry = trail new_trail = "#{trail}/#{account.id.to_s}" elsif parent.present? account.parent = parent new_trail = "#{account.ancestry}/#{account.id.to_s}" else account.parent = parent new_trail = account.id.to_s end trails[account.canvas_id] = new_trail account.save! if account.changed? end end
def ensure_ancestry
def ensure_ancestry return unless canvas_parent_account_id.present? return if canvas_parent.present? self.canvas_parent = Account.find_or_fetch(canvas_parent_account_id) canvas_parent.save! canvas_parent.ensure_ancestry relink_ancestry save! if changed? end
def relink_ancestry
def relink_ancestry self.parent = canvas_parent end