class Dscf::Marketplace::Category

def parent_not_self_or_descendant

def parent_not_self_or_descendant
  return unless parent_id
  if parent_id == id
    errors.add(:parent_id, "cannot be self-referencing")
    return
  end
  # Check for circular reference in descendants
  current = self.class.find_by(id: parent_id)
  while current
    if current.id == id
      errors.add(:parent_id, "creates circular reference")
      break
    end
    current = current.parent
  end
end