From 47850677e9a529d7ff9971b35af4be56f4e838c3 Mon Sep 17 00:00:00 2001 From: Andy Lindeman Date: Tue, 5 Jun 2012 12:37:09 -0400 Subject: [PATCH 1/2] Allows serialization_scope to be disabled with serialization_scope nil --- lib/action_controller/serialization.rb | 2 +- test/no_serialization_scope_test.rb | 34 ++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 test/no_serialization_scope_test.rb diff --git a/lib/action_controller/serialization.rb b/lib/action_controller/serialization.rb index 2c9d727f..4230e1d0 100644 --- a/lib/action_controller/serialization.rb +++ b/lib/action_controller/serialization.rb @@ -33,7 +33,7 @@ module ActionController end def serialization_scope - send(_serialization_scope) if respond_to?(_serialization_scope) + send(_serialization_scope) if _serialization_scope && respond_to?(_serialization_scope) end def default_serializer_options diff --git a/test/no_serialization_scope_test.rb b/test/no_serialization_scope_test.rb new file mode 100644 index 00000000..5a109cc0 --- /dev/null +++ b/test/no_serialization_scope_test.rb @@ -0,0 +1,34 @@ +require "test_helper" + +class NoSerializationScopeTest < ActionController::TestCase + class ScopeSerializer + def initialize(object, options) + @object, @options = object, options + end + + def as_json(*) + { :scope => @options[:scope].as_json } + end + end + + class ScopeSerializable + def active_model_serializer + ScopeSerializer + end + end + + class NoSerializationScopeController < ActionController::Base + serialization_scope nil + + def index + render :json => ScopeSerializable.new + end + end + + tests NoSerializationScopeController + + def test_disabled_serialization_scope + get :index + assert_equal '{"scope":null}', @response.body + end +end From c898e3daf95982ba649fb8da4cdccc80d20ee7be Mon Sep 17 00:00:00 2001 From: Tee Parham Date: Tue, 12 Jun 2012 10:38:32 -0700 Subject: [PATCH 2/2] remove unncessary is_a?(Hash) check --- lib/active_model/serializer.rb | 4 +--- test/serializer_test.rb | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/lib/active_model/serializer.rb b/lib/active_model/serializer.rb index e5021320..fa1cfd19 100644 --- a/lib/active_model/serializer.rb +++ b/lib/active_model/serializer.rb @@ -53,9 +53,7 @@ module ActiveModel @options[:unique_values] = {} array = serializable_array.map do |item| - if item.is_a?(Hash) - item - elsif item.respond_to?(:serializable_hash) + if item.respond_to?(:serializable_hash) item.serializable_hash else item.as_json diff --git a/test/serializer_test.rb b/test/serializer_test.rb index 06593b06..082cd6bf 100644 --- a/test/serializer_test.rb +++ b/test/serializer_test.rb @@ -408,7 +408,7 @@ class SerializerTest < ActiveModel::TestCase hash = {:value => "something"} array = [hash] serializer = array.active_model_serializer.new(array, :root => :items) - assert_equal({ :items => [ hash ]}, serializer.as_json) + assert_equal({ :items => [ hash.as_json ]}, serializer.as_json) end class CustomBlog < Blog