diff --git a/lib/active_model/serializable.rb b/lib/active_model/serializable.rb index 9a33d397..43950d66 100644 --- a/lib/active_model/serializable.rb +++ b/lib/active_model/serializable.rb @@ -9,11 +9,11 @@ module ActiveModel def as_json(options={}) instrument('!serialize') do if root = options.fetch(:root, json_key) - hash = { root => serializable_object } + hash = { root => serializable_object(options) } hash.merge!(serializable_data) hash else - serializable_object + serializable_object(options) end end end diff --git a/lib/active_model/serializer.rb b/lib/active_model/serializer.rb index bb0170a5..b2c7f3ad 100644 --- a/lib/active_model/serializer.rb +++ b/lib/active_model/serializer.rb @@ -273,7 +273,10 @@ end end] end + attr_accessor :serialization_options + def serializable_object(options={}) + self.serialization_options = options return @wrap_in_array ? [] : nil if @object.nil? hash = attributes hash.merge! associations