#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