# frozen_string_literal: true # Category is a first-level filter, used to categorize Products. # It is mandatory to choose a Category when creating a Product. class ProductCategory < ApplicationRecord extend FriendlyId friendly_id :name, use: :slugged validates :name, :slug, presence: true validates :slug, uniqueness: true belongs_to :parent, class_name: 'ProductCategory' has_many :children, class_name: 'ProductCategory', foreign_key: :parent_id, inverse_of: :parent, dependent: :nullify has_many :products, dependent: :nullify acts_as_list scope: :parent, top_of_list: 1 end