Rails 与 JSON Api - 包括 has_many 关系

Rails with JSON Api - including has_many relationships

我有三个模型,Item 和 Transfer 以及 Category(又名 Item Type):

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 规范。无论如何,我想通了,很快就会有答案!

我认为,这个问题有点重复。看看这个:Nesting :json include in Rails

您需要使用 as_json 和嵌套 include

原来我少了一个TransferSerializer!一旦我添加了一个,它就会像您期望的那样被放入 included 数组中。