From 359f290ddc2ce7d5d3ed581b4590f9fd3000eebf Mon Sep 17 00:00:00 2001 From: Lucas Hosseini Date: Wed, 23 Sep 2015 18:59:18 +0200 Subject: [PATCH 1/2] Add failing test. --- test/serializers/attribute_test.rb | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/test/serializers/attribute_test.rb b/test/serializers/attribute_test.rb index 5ca7f842..99452e53 100644 --- a/test/serializers/attribute_test.rb +++ b/test/serializers/attribute_test.rb @@ -57,6 +57,20 @@ module ActiveModel adapter = ActiveModel::Serializer::Adapter::Json.new(attributes_serializer.new(@blog)) assert_equal({ blog: { type: 'stuff' } }, adapter.serializable_hash) end + + def test_id_attribute_override_before + serializer = Class.new(ActiveModel::Serializer) do + def id + 'custom' + end + + attribute :id + end + + hash = ActiveModel::SerializableResource.new(@blog, adapter: :json, serializer: serializer).serializable_hash + + assert_equal('custom', hash[:blog][:id]) + end end end end From e552e4329bea2c9268b9faea6365a6fd6bfababc Mon Sep 17 00:00:00 2001 From: Lucas Hosseini Date: Wed, 23 Sep 2015 18:59:32 +0200 Subject: [PATCH 2/2] Fix. --- lib/active_model/serializer.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/active_model/serializer.rb b/lib/active_model/serializer.rb index 030e47d2..61343378 100644 --- a/lib/active_model/serializer.rb +++ b/lib/active_model/serializer.rb @@ -62,7 +62,7 @@ module ActiveModel ActiveModelSerializers.silence_warnings do define_method key do object.read_attribute_for_serialization(attr) - end unless (key != :id && method_defined?(key)) || _fragmented.respond_to?(attr) + end unless method_defined?(key) || _fragmented.respond_to?(attr) end end