diff --git a/lib/active_model/serializer/associations.rb b/lib/active_model/serializer/associations.rb index 4d4bee05..61c1f9d2 100644 --- a/lib/active_model/serializer/associations.rb +++ b/lib/active_model/serializer/associations.rb @@ -7,9 +7,8 @@ module ActiveModel def initialize(name, options={}) @name = name.to_s @options = options - - self.embed = options[:embed] || CONFIG.embed || :objects - @embed_in_root = @embed_ids && (options[:include] || CONFIG.include) + self.embed = options.fetch(:embed) { CONFIG.embed } + @embed_in_root = options.fetch(:include) { CONFIG.include } @embed_key = options[:embed_key] || :id @key = options[:key] @embedded_key = options[:root] || name diff --git a/lib/active_model/serializer/config.rb b/lib/active_model/serializer/config.rb index 1493fd5a..80c86c44 100644 --- a/lib/active_model/serializer/config.rb +++ b/lib/active_model/serializer/config.rb @@ -48,5 +48,6 @@ module ActiveModel end CONFIG = Config.new + CONFIG.embed = :objects end end diff --git a/test/unit/active_model/serializer/has_many_test.rb b/test/unit/active_model/serializer/has_many_test.rb index c442868c..8352e434 100644 --- a/test/unit/active_model/serializer/has_many_test.rb +++ b/test/unit/active_model/serializer/has_many_test.rb @@ -98,6 +98,20 @@ module ActiveModel CONFIG.clear end + def test_associations_embedding_nothing_including_objects_serialization_using_as_json + CONFIG.embed = nil + CONFIG.include = true + + PostSerializer._associations[:comments].send :initialize, @association.name, @association.options + + assert_equal({ + 'post' => { title: 'Title 1', body: 'Body 1' }, + 'comments' => [{ content: 'C1' }, { content: 'C2' }] + }, @post_serializer.as_json) + ensure + CONFIG.clear + end + def test_associations_using_a_given_serializer @association.embed_in_root = true @post_serializer.root = nil