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