Skip to content

Commit f2d0a91

Browse files
committed
Merge pull request #1195 from beauby/fix-id-override
Fix id override
2 parents a54d237 + e552e43 commit f2d0a91

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

lib/active_model/serializer.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ def self.attribute(attr, options = {})
6262
ActiveModelSerializers.silence_warnings do
6363
define_method key do
6464
object.read_attribute_for_serialization(attr)
65-
end unless (key != :id && method_defined?(key)) || _fragmented.respond_to?(attr)
65+
end unless method_defined?(key) || _fragmented.respond_to?(attr)
6666
end
6767
end
6868

test/serializers/attribute_test.rb

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,20 @@ def test_type_attribute
5757
adapter = ActiveModel::Serializer::Adapter::Json.new(attributes_serializer.new(@blog))
5858
assert_equal({ blog: { type: 'stuff' } }, adapter.serializable_hash)
5959
end
60+
61+
def test_id_attribute_override_before
62+
serializer = Class.new(ActiveModel::Serializer) do
63+
def id
64+
'custom'
65+
end
66+
67+
attribute :id
68+
end
69+
70+
hash = ActiveModel::SerializableResource.new(@blog, adapter: :json, serializer: serializer).serializable_hash
71+
72+
assert_equal('custom', hash[:blog][:id])
73+
end
6074
end
6175
end
6276
end

0 commit comments

Comments
 (0)