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