我有三个模型,项目和转移和类别(又名项目类型):
class Item < ApplicationRecord
belongs_to :category
has_many :transfers
end
class Transfer < ApplicationRecord
belongs_to :item
end
class Category < ApplicationRecord
has_many :item
end
在我的控制器中,我有
render json: @item, include: %i[transfer category]
# FWIW the include doesn't seem to affect category at all...
这导致JSON Api有效负载采用以下形状:
{
data: {
id,
attributes: {
/* the other attributes */
transfers: [ { /* full transfer object */ } ]
},
relationships: {
category: { data: { id, type: 'categories' } },
transfers: { data: [ { /* full transfer object */ } ]
}
}
},
included: [ { type: 'category', id, attributes } ]
}
这些类别表现得我的期望。我如何得到它,以便transfer
数组中包含每个included
而不是嵌套在属性或关系中?
谢谢!
编辑:不重复。我没有尝试嵌套响应,只是将它们包含在included
部分中以符合JSON API规范。无论如何,我想出来了,很快就会有答案!
答案 0 :(得分:1)
我认为,这个问题有点复制。看看这个:Nesting :json include in Rails
您需要使用as_json
和嵌套include
。
答案 1 :(得分:0)
原来我错过了TransferSerializer
!一旦我添加了一个,它就像你期待的那样放在included
数组中。