我试图获得一个看起来像这样的JSON
{
"data" : {
"type": "field_definition",
"id": 5,
"attributes": {
"specifier": "foo",
"entity_type": "bar"
}
"relationships": {
"active_collections" : [1,2,3]
}
}
}
我做了一个测试课,我用它作为我的模型:
class Test
attr_reader :id,
:specifier,
:entity_type,
:active_collections
def initialize
@id = 5
@specifier = "foo"
@entity_type = "bar"
@active_collections = [1,2,3]
end
end
我的序列化器:
class SerializableFieldCollection < JSONAPI::Serializable::Resource
type 'field_collection'
attributes :specifier, :entity_type
has_many :active_collections
end
我称之为
之类的东西 def index
render jsonapi: Test.new,
class: SerializableFieldCollection,
status: 200
end
{"data"=>
{"id"=>"5", "type"=>"field_collection", "attributes"=>{"specifier"=>"foo", "entity_type"=>"bar"}, "relationships"=>{"active_collections"=>{"meta"=>{"included"=>false}}}}}
有人能指出我如何使用jsonapi-rb gem中的relations / has_many函数吗?
答案 0 :(得分:1)
我认为你的问题是关于{"meta"=>{"included"=>false}}
部分,你宁愿做{"data"=>[{ "type": "foo", "id": "1" },{ "type": "foo", "id": "2" }, ...]}
吗?
如果是这样,则默认行为是仅在包含关系时序列化关系的链接数据。要在响应中包含关系,请使用include
渲染器选项。
示例:
render jsonapi: Test.new,
class: SerializableFieldCollection,
include: 'active_collections',
status: 200
答案 1 :(得分:0)
您是否确认JSONAPI::Serializable::Resource
已实施ActiveModel
或ActiveRecord
?如果没有,我认为你不能在has_many
使用ActiveCollection
。您对{{1}}的定义在哪里?