Shopify API:在一次调用中通过 id 检索多条记录

Bjo*_*erg 5 ruby ruby-on-rails activeresource shopify ruby-on-rails-3.2

我注意到在 Shopify API 文档中,他们提到可以使用“以逗号分隔的订单 ID 列表”作为名为“ids”的参数在一次调用中检索多个订单

链接到我所指的文档部分:https : //docs.shopify.com/api/order#index

我多年来一直在使用 shopify_api gem,它基于 Rails ActiveResource。我目前将它与 Rails 3.2.13 一起使用,效果很好。

我知道如何检索单个记录:

# params[:id] = "123456789"
order = ShopifyAPI::Order.find(params[:id])
Run Code Online (Sandbox Code Playgroud)

或同时进行多条记录:

orders = ShopifyAPI::Order.find(:all, :params => {:limit => 250, :page => 2})
Run Code Online (Sandbox Code Playgroud)

但是,我似乎无法使用多个 ID 使其工作。任何想法我在这里做错了什么?

# params[:ids] = "123456789,987654321,675849301"  
orders = ShopifyAPI::Order.find(:all, :params => {:ids => params[:ids]})
Run Code Online (Sandbox Code Playgroud)

哪个发出此 GET 请求: https://xxxxxx.myshopify.com:443/admin/orders.json?ids=123456789,987654321,675849301

却一无所获, orders = []

更新:

我还尝试了以下建议:

# params[:ids] = "123456789,987654321,675849301"  
orders = ShopifyAPI::Order.find(params[:ids])
Run Code Online (Sandbox Code Playgroud)

哪个发出此 GET 请求: https://xxxxxx.myshopify.com:443/admin/orders/123456789,987654321,675849301.json

然而,这只返回第一个订单 123456789

和:

# params[:ids] = "123456789,987654321,675849301"
ids_as_array = params[:ordersSel].split(",")
orders = ShopifyAPI::Order.find(:all, :params => {ids: ids_as_array})
Run Code Online (Sandbox Code Playgroud)

哪个发出此 GET 请求: https://xxxxxx.myshopify.com:443/admin/orders.json?ids[]=123456789&ids[]=987654321&ids[]=675849301

结果是 Bad Request

vos*_*art 4

这对我有用,刚刚在控制台中测试过

myids = "2354899011,1234263747"
ShopifyAPI::Order.where(ids: myids)
Run Code Online (Sandbox Code Playgroud)

这会产生以下请求

https://myfancyshop.myshopify.com/admin/orders.json?ids=2354899011,1234263747
Run Code Online (Sandbox Code Playgroud)

这也ShopifyAPI::Order.find(:all, :params => { :ids => myids })为我提供了相同的结果。