Использование Sequel с jsonapi-сериализатором

#ruby-on-rails #sequel #fastjsonapi

#ruby-on-rails #продолжение #fastjsonapi

Вопрос:

В проекте Rails api я добавил этот драгоценный камень для возврата json

 gem 'jsonapi-serializer'
  

Это модели, которые я определил, все очень простые вещи, которые выполняются.

 class UserSequel < Sequel::Model(:users)
end

class User < ActiveRecord::Base
end
  

Я сгенерировал класс сериализатора

 class UserSerializer
  include FastJsonapi::ObjectSerializer
  attributes :text
end
  

Теперь к вопросу

 # Using ActiveRecord model returns some json as expected
UserSerializer.new(User.first).serializable_hash.to_json
  

Однако следующее…

 # Using Sequel model
UserSerializer.new(UserSequel.first).serializable_hash.to_json
  

возвращает это сообщение об ошибке

FastJsonapi::MandatoryField (идентификатор является обязательным полем в спецификации jsonapi)

Я не совсем понимаю, почему это происходит, потому что, очевидно, модель Sequel содержит столбец id , и вызов этого возвращает ожидаемый результат

 UserSequel.first.id 
# => 1
  

Ответ №1:

Оказалось, что это была ошибка в jsonapi-serializer gem, которая сейчас устранена. (на момент написания статьи не выпущен).

Используйте git опцию, чтобы получить последнюю версию

 gem 'jsonapi-serializer', git: 'git://github.com/jsonapi-serializer/jsonapi-serializer'
  

https://github.com/jsonapi-serializer/jsonapi-serializer/issues/112