Shopify Ruby スクリプト エラー - 割引コード要件が満たされていません (空のカート)

概要

「セール」のタグが付いた製品のプロモーション コードの使用をブロックするスクリプトを作成しています。スクリプトの 1 行目にエラー メッセージが表示されますが、解決方法がわかりません。それ以外の場合、スクリプトは正常に機能し、期待どおりに動作します。

このエラーを解決する方法について何か提案はありますか?

# ================================ Customizable Settings ================================
# ================================================================
# Define the tag for products where discounts are not allowed.
# ================================================================
SALE_TAGS = ['sale', 'Sale'] # Tags used to identify sale products
REJECTION_MESSAGE = "Discount codes can't be used with Sale products"

# ================================ Script Code (do not edit) ================================
# ================================================================
# ProductSelector
# Finds matching products by the entered criteria.
# ================================================================
class ProductSelector
  def initialize(tags)
    @tags = tags.map(&:downcase)
  end

  def match?(line_item)
    product_tags = line_item.variant.product.tags.map(&:downcase)
    (@tags & product_tags).any?
  end
end

# ================================================================
# DisableDiscountCodesForProductsCampaign
# If any matching items are in the cart, the discount code is rejected.
# ================================================================
class DisableDiscountCodesForProductsCampaign
  def initialize(tags, message)
    @product_selector = ProductSelector.new(tags)
    @rejection_message = message
  end

  def run(cart)
    return if cart.discount_code.nil?

    if cart.line_items.any? { |line_item| @product_selector.match?(line_item) }
      cart.discount_code.reject(message: @rejection_message)
    end
  end
end

# ================================================================
# Campaign Execution
# ================================================================
campaign = DisableDiscountCodesForProductsCampaign.new(SALE_TAGS, REJECTION_MESSAGE)
campaign.run(Input.cart)
Output.cart = Input.cart

解決策

この問題も発生しました。カート入力からテストしていたコードを削除することで問題を解決しました。

割引コードを削除したら、コード エディターで小さな変更を加えて (スペースを追加するなど)、エラー チェッカーを再度トリガーします。これで解決されるはずです。