Пример отношений jsonapi-rb
Я пытаюсь получить 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}}}}}
Может ли кто-нибудь указать мне правильное направление использования функции Relations / has_many в геме jsonapi-rb?
2 ответа
Я так понимаю, ваш вопрос о {"meta"=>{"included"=>false}}
часть, которую вы бы предпочли {"data"=>[{ "type": "foo", "id": "1" },{ "type": "foo", "id": "2" }, ...]}
? Если это так, поведение по умолчанию заключается в сериализации данных о связях для отношения, только когда оно включено. Чтобы включить отношение в ответ, используйте include
опция рендерера.
Пример:
render jsonapi: Test.new,
class: SerializableFieldCollection,
include: 'active_collections',
status: 200
Вы убедились, что JSONAPI::Serializable::Resource
инвентарь ActiveModel
или же ActiveRecord
? Если нет, я не думаю, что вы можете использовать has_many
Вот. Где ваше определение для ActiveCollection
?