From 14b1df5c366e5fb2f7c8fabfe2d025ab74182b2c Mon Sep 17 00:00:00 2001 From: Tim Petricola Date: Fri, 14 Feb 2014 12:41:10 -0500 Subject: [PATCH] Custom options are accessible in serializer (via :context) --- lib/active_model/serializer.rb | 3 ++- test/unit/active_model/serializer/options_test.rb | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 test/unit/active_model/serializer/options_test.rb diff --git a/lib/active_model/serializer.rb b/lib/active_model/serializer.rb index 36431068..c1564412 100644 --- a/lib/active_model/serializer.rb +++ b/lib/active_model/serializer.rb @@ -116,8 +116,9 @@ end @only = Array(options[:only]) if options[:only] @except = Array(options[:except]) if options[:except] @key_format = options[:key_format] + @context = options[:context] end - attr_accessor :object, :scope, :root, :meta_key, :meta, :key_format + attr_accessor :object, :scope, :root, :meta_key, :meta, :key_format, :context def json_key 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 00000000..986d2071 --- /dev/null +++ b/test/unit/active_model/serializer/options_test.rb @@ -0,0 +1,15 @@ +require 'test_helper' + +module ActiveModel + class Serializer + class OptionsTest < Minitest::Test + def setup + @serializer = ProfileSerializer.new(nil, context: {foo: :bar}) + end + + def test_custom_options_are_accessible_from_serializer + assert_equal({foo: :bar}, @serializer.context) + end + end + end +end