# frozen_string_literal: true module C class MenuItem < ApplicationRecord has_closure_tree order: 'weight' validates :machine_name, presence: true validates :name, presence: true belongs_to :page before_validation on: :create do self.machine_name = name end belongs_to :page def self.depth_select_options(item) opts = [] save_pair = proc do |level, i| level.each do |key, value| next if key.id == item.id opts.append(["#{'-' * i}#{key.name}", key.id]) save_pair.call(value, i + 1) if value.class <= Hash end end save_pair.call(hash_tree, 0) opts end # Force non blank parametized machine name def machine_name=(val) super val.to_s.parameterize end end end