首页 > 解决方案 > 渲染状态:200 使用 sidekiq 等后台作业

问题描述

我正在处理 Shopify 订单创建 webhook,它会触发多次。

def perform(shop_domain:, webhook:)
    shop = Shop.find_by(shopify_domain: shop_domain)
    found = false
    order_item_ids = []
    webhook['line_items'].each do |line_item|
        line_item['properties'].each do |property|
            if property['name'] == 'BJ_PROD'
                found = true
                order_item_ids << line_item['product_id']
            end
        end
    end
    if found
        @order = Order.create({
          shop: shop,
          shopify_order_id: webhook["id"],
          status: 'Ordered',
          sent_to_admin: false,
          order_details: webhook
        })
    end

    session = ShopifyAPI::Session.new(shop.shopify_domain, shop.shopify_token)
    session = ShopifyAPI::Base.activate_session(session)
    order_item_ids.each do |order_item_id|
      product = ShopifyAPI::Product.find(order_item_id)
      product.published_at = nil
      product.save!
    end
    shop.with_shopify_session do
    end
    render status: 200, json: @order.to_json
  end

我正在尝试在我的 OrdersCreateJob 类中使用render status: 200head :ok但它在后台作业中使用时会出错。有没有人知道如何处理这种情况?

标签: ruby-on-railsrubybackground-processsidekiq

解决方案


推荐阅读