diff --git a/lib/active_model/serializer/adapter.rb b/lib/active_model/serializer/adapter.rb index 852fa53e..7c061434 100644 --- a/lib/active_model/serializer/adapter.rb +++ b/lib/active_model/serializer/adapter.rb @@ -33,7 +33,8 @@ module ActiveModel end def self.adapter_class(adapter) - "ActiveModel::Serializer::Adapter::#{adapter.to_s.classify}".safe_constantize + adapter_name = adapter.to_s.classify.sub("API", "Api") + "ActiveModel::Serializer::Adapter::#{adapter_name}".safe_constantize end def fragment_cache(*args) @@ -42,7 +43,7 @@ module ActiveModel private - def cache_check(serializer) + def cache_check(serializer) @cached_serializer = serializer @klass = @cached_serializer.class if is_cached? diff --git a/test/adapter_test.rb b/test/adapter_test.rb index 7268c386..3349d8a7 100644 --- a/test/adapter_test.rb +++ b/test/adapter_test.rb @@ -38,6 +38,15 @@ module ActiveModel adapter = ActiveModel::Serializer::Adapter.create(@serializer, { adapter: :json_api}) assert_equal ActiveModel::Serializer::Adapter::JsonApi, adapter.class end + + def test_inflected_adapter_class_for_known_adapter + ActiveSupport::Inflector.inflections(:en){|inflect| inflect.acronym 'API' } + klass = ActiveModel::Serializer::Adapter.adapter_class(:json_api) + + ActiveSupport::Inflector.inflections.acronyms.clear + + assert_equal ActiveModel::Serializer::Adapter::JsonApi, klass + end end end end