0

我有三个模型ProductOrderOrderItem。给定 的实例Order,您可以通过调用 来获取订单商品列表order.order_items。每个都OrderItem必须只有一个Product对象,该对象由 a 引用product_id

我想创建一个 RESTful API,客户可以在其中询问有关订单的信息,而我的服务器将一次“加入”所有数据。与让客户端使用 javascript 迭代每个订单项目、获取产品 ID 并向视图发出请求相反,该product.json视图将返回所请求产品的信息。

我有这样的product.json观点,但我认为最好让我的 API 更容易使用,并尽量减少对服务器的请求数量(不过,我没有理由支持这种观点)

例如,当您询问有关订单 1 的信息时,我想返回的输出如下所示

{ "order_id" : 1,
  "order_items" : [
    {
      "order_item_id" : 1,
      "product" : {
        "name": "Carrots"
      }
    },
    {
      "order_item_id" : 2,
      "product" : {
        "name": "Tuna"
      }
    }
  ]
}

在我order.json看来,我已经开始这样做了

json.(@order, :order_items)

它表明了这一点

{ "order_id" : 1,
  "order_items" : [
    {
      "order_item_id" : 1,
      "product_id" : 13
    },
    {
      "order_item_id" : 2,
      "product_id" : 128
    }
  ]
}

这非常接近,但是我可以添加什么来扩展product_id每个订单项目的内部并将它们替换为产品的字段。

我怎样才能达到预期的输出?

4

1 回答 1

0

您好,您可以尝试使用 to_json 方法的 :include 选项,如下所示

order = Order.find(1)
order.to_json( include: { order_items: { include: {:product} } } )

我希望它有帮助:)

于 2013-11-04T10:40:13.853 回答