class PathSegment < ApplicationRecord validates :segment, presence: true, uniqueness: true validates :usage_count, presence: true, numericality: { greater_than: 0 } # Class method to find or create a segment def self.find_or_create_segment(segment) find_or_create_by(segment: segment) do |path_segment| path_segment.usage_count = 1 path_segment.first_seen_at = Time.current end end # Increment usage count def increment_usage! increment!(:usage_count) end end