Пример отношений 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?

Другие вопросы по тегам