首页 > 解决方案 > 如何仅显示与模型数据库中的记录匹配的 API json 响应中的属性?

问题描述

问题:我无法让我的 API 向我显示我想要的与存储在数据库中的 StoreProduct 模型记录相匹配的结果。

我想要什么:显示其中包含特定 product_id 的订单。

我有以下 API json 响应

[[#<ShopifyAPI::LineItem:0x000055ef6161f110 @attributes={"id"=>1959792476209, "variant_id"=>15345627234353, "title"=>"Burton Custom Freestlye 151 37", "quantity"=>1, "sku"=>"", "variant_title"=>nil, "vendor"=>"Burton", "fulfillment_service"=>"manual", "product_id"=>19600013786737, ...

在最后一条记录中,您将看到“product_id”。我在我的 StoreProduct 模型中有这个作为 store_product_id。如果 product_id 与我的 StoreProduct 数据库中的一个匹配,我只想显示它。

例如,如果我将这些信息存储在我自己的模型/数据库中,我会这样做:

@store_products = StoreProduct.all
@store_orders = Orders.where(product_id: @store_products.each {|store_product| store_product.store_product_id})

在我看来,我试过这个:

<% @store_orders.each do |order| %>
      <tr>
        <% order.line_items.each do |line| %>
          <% if line.product_id == @store_products.each {|store_product| store_product.store_product_id} %>
            <td><%= line.product_id %></td>
          <% end %>
        <% end %>
      </tr>
    <% end %>

控制器:

@store_products = StoreProduct.all
@store_orders = ShopifyAPI::Order.all

什么也没有出现。(我在将它迁移到控制器之前在前端执行此操作,以便我可以看到发生了什么)

如果我删除 if 语句,所有 product_id 都会出现在订单中。

当我尝试使用 a.where时,它给了我一个错误,我无法在 Shopify API 中使用“where”。

问题:我怎样才能使它只显示与我在 StoreProduct DB 中的任何 store_product.store_product_id 匹配的订单和产品 ID?

标签: ruby-on-railsjsonrubyrest

解决方案


推荐阅读