diff --git a/lib/active_model/serializer.rb b/lib/active_model/serializer.rb index a9f0e756..6e6833bb 100644 --- a/lib/active_model/serializer.rb +++ b/lib/active_model/serializer.rb @@ -70,7 +70,7 @@ module ActiveModel ActiveModelSerializers.silence_warnings do define_method key do object.read_attribute_for_serialization(attr) - end unless respond_to?(key, false) || _fragmented.respond_to?(attr) + end unless (key != :id && method_defined?(key)) || _fragmented.respond_to?(attr) end end diff --git a/test/fixtures/poro.rb b/test/fixtures/poro.rb index 0c0e3a58..7293e546 100644 --- a/test/fixtures/poro.rb +++ b/test/fixtures/poro.rb @@ -134,7 +134,8 @@ end AuthorSerializer = Class.new(ActiveModel::Serializer) do cache key:'writer', skip_digest: true - attributes :id, :name + attribute :id + attribute :name has_many :posts, embed: :ids has_many :roles, embed: :ids