diff --git a/lib/action_controller/serialization.rb b/lib/action_controller/serialization.rb index d52c6800..b4cbc73d 100644 --- a/lib/action_controller/serialization.rb +++ b/lib/action_controller/serialization.rb @@ -52,7 +52,7 @@ module ActionController end if serializer - options[:scope] = serialization_scope + options[:scope] = serialization_scope unless options.has_key?(:scope) options[:url_options] = url_options json = serializer.new(json, options.merge(default_serializer_options || {})) end diff --git a/test/serialization_test.rb b/test/serialization_test.rb index 9706f70a..2bcc1c9a 100644 --- a/test/serialization_test.rb +++ b/test/serialization_test.rb @@ -131,6 +131,12 @@ class RenderJsonTest < ActionController::TestCase render :json => JsonSerializable.new, :options => true end + def render_json_with_serializer_and_scope_option + @current_user = Struct.new(:as_json).new(:current_user => true) + scope = Struct.new(:as_json).new(:current_user => false) + render :json => JsonSerializable.new, :scope => scope + end + def render_json_with_serializer_api_but_without_serializer @current_user = Struct.new(:as_json).new(:current_user => true) render :json => JsonSerializable.new(true) @@ -259,6 +265,11 @@ class RenderJsonTest < ActionController::TestCase assert_match '"options":true', @response.body end + def test_render_json_with_serializer_and_scope_option + get :render_json_with_serializer_and_scope_option + assert_match '"scope":{"current_user":false}', @response.body + end + def test_render_json_with_serializer_api_but_without_serializer get :render_json_with_serializer_api_but_without_serializer assert_match '{"serializable_object":true}', @response.body