未知的适配器:json_api。有效的适配器是:[":fragmentcache",":json",":flattenjson",":null",": jsonapi"]

时间:2016-02-19 14:19:20

标签: ruby-on-rails active-model-serializers

我使用active_model_serializers(0.10.0.rc2)gem运行rails4。今天我开始为我的客户端设备开发api。我运行rspec测试,它给了我这个错误

ArgumentError:
   Unknown adapter: json_api. Valid adapters are: [":fragmentcache", ":json", ":flattenjson", ":null", ":jsonapi"].

我的配置:

class BaseSerializer < ActiveModel::Serializer
  def initialize(object, options = {})
    ActiveModel::Serializer.config.adapter = :json_api
    super(object, options)
  end
end

我检查了宝石它仍然是0.10.0.rc2。所以宝石清单没有变化。我想知道是什么原因导致这个问题?

请帮助

1 个答案:

答案 0 :(得分:0)

我从这个帖子https://github.com/rails-api/active_model_serializers/issues/993找到了一个解决方案。我的问题是我拥有&#39; API&#39;我的config / inflections.rb中的首字母缩略词。

inflect.acronym 'RSA'
inflect.acronym 'API'

:json_api适配器将被实际转换为一个类。由于 api 将被翻译为 API ,因此AMS将无法找到类似此JsonAPI的内容。

要解决这个问题,我必须直接把这个类放在下面:

class BaseSerializer < ActiveModel::Serializer
  def initialize(object, options = {})
    ActiveModel::Serializer.config.adapter = ActiveModel::Serializer::Adapter::JsonApi
    super(object, options)
  end
end