我在我的rails-api應用程序中使用ActiveModel :: Serializer。 我有一個多態型的關聯稱爲addonable:active_model_serializers關聯爲:
class AddOn < ActiveRecord::Base
belongs_to :addonable, polymorphic: true
end
class Container < ActiveRecord::Base
has_many :add_ons, as: :addonable
end
class Depot < ActiveRecord::Base
has_many :add_ons, as: :addonable
end
然後,我有兩個不同的控制器,它們中的每一個返回不同addonable(容器或倉庫)。 我想序列化與它的類名返回addonable協會:
class DepotSelectSerializer < ActiveModel::Serializer
attributes :id, :quantity
belongs_to :addonable, serializer: DepotSerializer, polymorphic: true
end
#returns: {:data=>{:id=>:string, :type=>:string, :attributes=>{:quantity=>:integer}, :relationships=>{:addonable=>{:data=>:object}}}}
#I want: {:data=>{:id=>:string, :type=>:string, :attributes=>{:quantity=>:integer}, :relationships=>{:depot=>{:data=>:object}}}}
我希望對象是在關係散,沒有屬性,這就是爲什麼我不能使用自定義的方法。
理想情況下,我會是這樣的:
belongs_to :addonable, serializer: ContainerSerializer, polymorphic: true, as: :depot
但我找不到類似的事情。這可能嗎? 在此先感謝
對於那些正在使用rails-api/active_model_serializers的人。可以指示:鍵。所以在我的情況下,它將是belongs_to:addonable,序列化程序:DepotSerializer,polymorphic:true,鍵:: depot – hcarreras