diff --git a/lib/active_model/array_serializer.rb b/lib/active_model/array_serializer.rb index cc2f310d..dfb86844 100644 --- a/lib/active_model/array_serializer.rb +++ b/lib/active_model/array_serializer.rb @@ -14,17 +14,18 @@ module ActiveModel def initialize(object, options={}) @object = object + @scope = options[:scope] @root = options.fetch(:root, self.class._root) @meta_key = options[:meta_key] || :meta @meta = options[@meta_key] @each_serializer = options[:each_serializer] - @options = options.merge(root: nil) + @resource_name = options[:resource_name] end - attr_accessor :object, :root, :meta_key, :meta, :options + attr_accessor :object, :scope, :root, :meta_key, :meta def json_key if root.nil? - @options[:resource_name] + @resource_name else root end @@ -32,7 +33,7 @@ module ActiveModel def serializer_for(item) serializer_class = @each_serializer || Serializer.serializer_for(item) || DefaultSerializer - serializer_class.new(item, @options) + serializer_class.new(item, scope: scope) end def serializable_object diff --git a/lib/active_model/serializer.rb b/lib/active_model/serializer.rb index fb6b5ff7..fba7fffa 100644 --- a/lib/active_model/serializer.rb +++ b/lib/active_model/serializer.rb @@ -102,14 +102,14 @@ end end def initialize(object, options={}) - @object = object - @scope = options[:scope] - @root = options.fetch(:root, self.class._root) - @meta_key = options[:meta_key] || :meta - @meta = options[@meta_key] - @options = options.reject{|k,v| [:scope, :root, :meta_key, :meta].include?(k) } + @object = object + @scope = options[:scope] + @root = options.fetch(:root, self.class._root) + @meta_key = options[:meta_key] || :meta + @meta = options[@meta_key] + @wrap_in_array = options[:_wrap_in_array] end - attr_accessor :object, :scope, :meta_key, :meta, :root, :options + attr_accessor :object, :scope, :root, :meta_key, :meta def json_key if root == true || root.nil? @@ -186,7 +186,7 @@ end return nil if object.nil? hash = attributes hash.merge! associations - @options[:_wrap_in_array] ? [hash] : hash + @wrap_in_array ? [hash] : hash end alias_method :serializable_hash, :serializable_object end diff --git a/test/unit/active_model/serializer/options_test.rb b/test/unit/active_model/serializer/options_test.rb deleted file mode 100644 index b064f310..00000000 --- a/test/unit/active_model/serializer/options_test.rb +++ /dev/null @@ -1,17 +0,0 @@ -require 'test_helper' - -module ActiveModel - class Serializer - class OptionsTest < ActiveModel::TestCase - def setup - @profile = Profile.new({ name: 'Name 1', description: 'Description 1', comments: 'Comments 1' }) - end - - def test_meta - profile_serializer = ProfileSerializer.new(@profile, root: 'profile', random_option: "This is an option") - - assert_equal("This is an option", profile_serializer.options[:random_option]) - end - end - end -end