diff --git a/lib/action_controller/serialization.rb b/lib/action_controller/serialization.rb index df23aa95..d8aaef9a 100644 --- a/lib/action_controller/serialization.rb +++ b/lib/action_controller/serialization.rb @@ -87,7 +87,7 @@ module ActionController if serializer = options.fetch(:serializer, default_serializer(resource)) options[:scope] = serialization_scope unless options.has_key?(:scope) - if resource.respond_to?(:each) + if resource.respond_to?(:to_ary) options[:resource_name] = controller_name options[:namespace] = namespace_for_serializer if namespace_for_serializer end diff --git a/lib/active_model/serializer.rb b/lib/active_model/serializer.rb index 01b439e7..cceba3f4 100644 --- a/lib/active_model/serializer.rb +++ b/lib/active_model/serializer.rb @@ -56,7 +56,7 @@ end attr_reader :key_format def serializer_for(resource, options = {}) - if resource.respond_to?(:each) && !resource.is_a?(Hash) + if resource.respond_to?(:to_ary) if Object.constants.include?(:ArraySerializer) ::ArraySerializer else diff --git a/lib/active_model/serializer/version.rb b/lib/active_model/serializer/version.rb index aa440753..624455c8 100644 --- a/lib/active_model/serializer/version.rb +++ b/lib/active_model/serializer/version.rb @@ -1,5 +1,5 @@ module ActiveModel class Serializer - VERSION = '0.9.1' + VERSION = '0.9.3' end end diff --git a/test/fixtures/poro.rb b/test/fixtures/poro.rb index 73fc0463..26c8c7d0 100644 --- a/test/fixtures/poro.rb +++ b/test/fixtures/poro.rb @@ -100,10 +100,6 @@ class ProfileSerializer < ActiveModel::Serializer attributes :name, :description end -class DifferentProfileSerializer < ActiveModel::Serializer - attributes :name -end - class CategorySerializer < ActiveModel::Serializer attributes :name diff --git a/test/integration/action_controller/serialization_test.rb b/test/integration/action_controller/serialization_test.rb index e3ec71b3..e740824e 100644 --- a/test/integration/action_controller/serialization_test.rb +++ b/test/integration/action_controller/serialization_test.rb @@ -283,21 +283,5 @@ module ActionController assert_equal("{\"my\":[{\"name\":\"Name 1\",\"email\":\"mail@server.com\",\"profile_id\":#{@controller.user.profile.object_id}}],\"profiles\":[{\"name\":\"N1\",\"description\":\"D1\"}]}", @response.body) end end - - class ExplicitEachSerializerWithEnumarableObjectTest < ActionController::TestCase - class MyController < ActionController::Base - def render_array - render json: [Profile.new({ name: 'Name 1', description: 'Description 1', comments: 'Comments 1' })].to_enum, each_serializer: DifferentProfileSerializer - end - end - - tests MyController - - def test_render_array - get :render_array - assert_equal 'application/json', @response.content_type - assert_equal '{"my":[{"name":"Name 1"}]}', @response.body - end - end end end