class Shop class DuplicateProductIdError < StandardError; end def initialize @products = [] end def products @products end def add_product(product) raise DuplicateProductIdError if duplicate_id?(product.id) @products.push(product) end private def duplicate_id?(id) @products.map(&:id).include?(id) end end