小编Bjo*_*erg的帖子

检索shopify Shop对象?

我觉得我在这里错过了一些非常简单的东西.所以我有认证会话,我基本上想加载当前的Shop对象来访问某些东西,比如电子邮件地址,shop_owner等.如何检索它以基本上获得此响应?

http://api.shopify.com/shop.html#show
Run Code Online (Sandbox Code Playgroud)

我试着查看/admin/shop.json并使用

ShopifyAPI::Shop.find(someidnumber)
Run Code Online (Sandbox Code Playgroud)

但没有去?

ruby-on-rails shopify

8
推荐指数
1
解决办法
1124
查看次数

Rails:更快地对许多记录执行更新

在我们的Rails 3.2.13应用程序(Heroku中的Ruby 2.0.0 + Postgres)中,我们经常从API中检索大量订单数据,然后我们需要更新或创建数据库中的每个订单,以及关联.单个订单创建/更新自身加上约.10-15个关联对象,我们一次最多导入500个订单.

下面的代码可行,但问题是它在速度方面根本没有效率.创建/更新500条记录大约需要 1分钟,生成6500多个db查询!

def add_details(shop, shopify_orders)
  shopify_orders.each do |shopify_order|
    order = Order.where(:order_id => shopify_order.id.to_s, :shop_id => shop.id).first_or_create
    order.update_details(order,shopify_order,shop)  #This calls update_attributes for the Order
    ShippingLine.add_details(order, shopify_order.shipping_lines)
    LineItem.add_details(order, shopify_order.line_items)
    Taxline.add_details(order, shopify_order.tax_lines)
    Fulfillment.add_details(order, shopify_order.fulfillments)
    Note.add_details(order, shopify_order.note_attributes)
    Discount.add_details(order, shopify_order.discount_codes)
    billing_address = shopify_order.billing_address rescue nil
    if !billing_address.blank?
      BillingAddress.add_details(order, billing_address)
    end
    shipping_address = shopify_order.shipping_address rescue nil
    if !shipping_address.blank?
      ShippingAddress.add_details(order, shipping_address)
    end
    payment_details = shopify_order.payment_details rescue nil
    if !payment_details.blank?
      PaymentDetail.add_details(order, payment_details)
    end
  end
end

  def update_details(order,shopify_order,shop)
    order.update_attributes(
      :order_name => shopify_order.name,
      :order_created_at => …
Run Code Online (Sandbox Code Playgroud)

ruby postgresql performance ruby-on-rails updates

6
推荐指数
1
解决办法
6987
查看次数

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

我注意到在 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 …

ruby ruby-on-rails activeresource shopify ruby-on-rails-3.2

5
推荐指数
1
解决办法
1420
查看次数