diff --git a/lib/active_model/array_serializer.rb b/lib/active_model/array_serializer.rb index ce73ece1b..54278ea8a 100644 --- a/lib/active_model/array_serializer.rb +++ b/lib/active_model/array_serializer.rb @@ -20,7 +20,7 @@ def initialize(object, options={}) @each_serializer = options[:each_serializer] @options = options.merge(root: nil) end - attr_accessor :object, :root, :meta_key, :meta + attr_accessor :object, :root, :meta_key, :meta, :options def json_key if root.nil? diff --git a/lib/active_model/serializer.rb b/lib/active_model/serializer.rb index b0563beec..c582128a4 100644 --- a/lib/active_model/serializer.rb +++ b/lib/active_model/serializer.rb @@ -106,8 +106,9 @@ def initialize(object, options={}) @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) } end - attr_accessor :object, :scope, :meta_key, :meta, :root + attr_accessor :object, :scope, :meta_key, :meta, :root, :options def json_key if root == true || root.nil? diff --git a/test/unit/active_model/serializer/options_test.rb b/test/unit/active_model/serializer/options_test.rb new file mode 100644 index 000000000..b064f3107 --- /dev/null +++ b/test/unit/active_model/serializer/options_test.rb @@ -0,0 +1,17 @@ +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