diff --git a/lib/grape_entity/entity.rb b/lib/grape_entity/entity.rb index 740173e6..1bf1cc8b 100644 --- a/lib/grape_entity/entity.rb +++ b/lib/grape_entity/entity.rb @@ -195,7 +195,7 @@ def nested_exposures value = nested_exposures_hash if superclass.respond_to? :nested_exposures - value = superclass.nested_exposures.merge(value) + value = superclass.nested_exposures.deep_merge(value) end value diff --git a/spec/grape_entity/entity_spec.rb b/spec/grape_entity/entity_spec.rb index 1b4dafd6..cb4fb042 100644 --- a/spec/grape_entity/entity_spec.rb +++ b/spec/grape_entity/entity_spec.rb @@ -137,7 +137,7 @@ class ClassRoom < Grape::Entity class Person < Grape::Entity expose :user do - expose(:id) { |_| 'value' } + expose(:in_first) { |_| 'value' } end end @@ -155,12 +155,18 @@ class Parent < Person ClassRoom.represent({}).serializable_hash.should == { parents: [ { - user: { id: "value" }, - children: [{ user: { user_id: "value", display_id: "value" } }, { user: { user_id: "value", display_id: "value" } }] + user: { in_first: 'value' }, + children: [ + { user: { in_first: 'value', user_id: "value", display_id: "value" } }, + { user: { in_first: 'value', user_id: "value", display_id: "value" } } + ] }, { - user: { id: "value" }, - children: [{ user: { user_id: "value", display_id: "value" } }, { user: { user_id: "value", display_id: "value" } }] + user: { in_first: 'value' }, + children: [ + { user: { in_first: 'value', user_id: "value", display_id: "value" } }, + { user: { in_first: 'value', user_id: "value", display_id: "value" } } + ] } ] }