mirror of
https://github.com/ditkrg/active_model_serializers.git
synced 2026-01-24 23:06:50 +00:00
serialize_ids doesn't use source serializer and it's object
This commit is contained in:
parent
9f5e872621
commit
0917148617
@ -384,7 +384,12 @@ module ActiveModel
|
|||||||
association = association_class.new(name, self, options)
|
association = association_class.new(name, self, options)
|
||||||
|
|
||||||
if association.embed_ids?
|
if association.embed_ids?
|
||||||
node[association.key] = association.serialize_ids
|
node[association.key] =
|
||||||
|
if options[:embed_key] || self.respond_to?(name) || !self.object.respond_to?(association.id_key)
|
||||||
|
association.serialize_ids
|
||||||
|
else
|
||||||
|
self.object.read_attribute_for_serialization(association.id_key)
|
||||||
|
end
|
||||||
|
|
||||||
if association.embed_in_root? && hash.nil?
|
if association.embed_in_root? && hash.nil?
|
||||||
raise IncludeError.new(self.class, association.name)
|
raise IncludeError.new(self.class, association.name)
|
||||||
|
|||||||
@ -100,12 +100,8 @@ module ActiveModel
|
|||||||
end
|
end
|
||||||
|
|
||||||
def serialize_ids
|
def serialize_ids
|
||||||
if !options[:embed_key] && !source_serializer.respond_to?(@name.to_s) && source_serializer.object.respond_to?(id_key)
|
associated_object.map do |item|
|
||||||
source_serializer.object.read_attribute_for_serialization(id_key)
|
item.read_attribute_for_serialization(embed_key)
|
||||||
else
|
|
||||||
associated_object.map do |item|
|
|
||||||
item.read_attribute_for_serialization(embed_key)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -179,21 +175,16 @@ module ActiveModel
|
|||||||
end
|
end
|
||||||
|
|
||||||
def serialize_ids
|
def serialize_ids
|
||||||
if polymorphic?
|
if associated_object
|
||||||
if associated_object
|
id = associated_object.read_attribute_for_serialization(embed_key)
|
||||||
|
if polymorphic?
|
||||||
{
|
{
|
||||||
:type => polymorphic_key,
|
:type => polymorphic_key,
|
||||||
:id => associated_object.read_attribute_for_serialization(embed_key)
|
:id => id
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
nil
|
id
|
||||||
end
|
end
|
||||||
elsif !options[:embed_key] && !source_serializer.respond_to?(@name.to_s) && source_serializer.object.respond_to?(id_key)
|
|
||||||
source_serializer.object.read_attribute_for_serialization(id_key)
|
|
||||||
elsif associated_object
|
|
||||||
associated_object.read_attribute_for_serialization(embed_key)
|
|
||||||
else
|
|
||||||
nil
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user