我有三个模型,Product
,Order
和OrderItem
。给定Order
的实例,您可以通过调用order.order_items
获取订单商品列表。每个OrderItem
必须只有一个Product
对象,由product_id
引用。
我想创建一个RESTful API,客户可以询问有关订单的信息,我的服务器将立即“加入”所有数据。而不是让客户使用javascript来迭代每个订单商品,获取产品ID,并向product.json
视图发出请求,该请求将返回所请求产品的信息。
我有这样一个product.json
视图,但我认为最好是让我更容易使用我的API以及最小化对服务器的请求数量(I但是,没有任何理由支持这种观点。
例如,当您询问有关订单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
,并将其替换为产品的字段。
如何实现所需的输出?
答案 0 :(得分:0)
您好,您可以尝试使用to_json方法的:include选项作为以下
order = Order.find(1)
order.to_json( include: { order_items: { include: {:product} } } )
我希望它有所帮助:)