0

我对 gem jsonapi-rb 有问题,我尝试在可序列化中使用关系,但它确实有效。

模型

class Customer < ApplicationRecord
  has_one :card
end

class Card < ApplicationRecord
  belongs_to :customer
end

可序列化的

class SerializableCustomer < JSONAPI::Serializable::Resource
  type :customer
  attributes :id

  has_one :card do
    data do
      @object.card
    end
  end
end


class SerializableCard < JSONAPI::Serializable::Resource
  type :card
  attributes :id, :stripe_id, :exp_month

  belongs_to :customer do
    data do
      @object.customer
    end
  end
end

客户已经有一张卡,但是当我尝试获得回复时,只获得客户关系,我没有得到有关卡的数据

SerializableCustomer.new(object: customer)

回应

{
  "id": "1",
  "type": "customer",
  "attributes": {
    "id": "1",
  },
  "relationships": {
    "card": {
      "meta": {
        "included": false
      }
    }
  }
}
4

1 回答 1

1

包含卡关系的数据。您需要将其包含在初始化中。默认情况下,它只会在包含关系时序列化关系的链接数据。

SerializableCustomer.new(object: customer, include: [:cards])

您也可以在呈现 JSON 时包含它。

render jsonapi: customer, include: [:cards]
于 2017-11-21T23:33:34.990 回答