我试图覆盖多态关系的默认序列化程序。我有:
class NotificationListSerializer < ActiveModel::Serializer
attributes :id, :title
belongs_to :notifiable, polymorphic: true
end如果notifiable是一个组织,则该组织将使用OrganizationSerializer序列化。如果notifiable是一个组,则该组将使用GroupSerializer序列化。这是完全合理的,但是如何根据类指定不同的序列化程序呢?
例如,如果notifiable是一个组织,我希望使用SparseOrganizationSerializer而不是OrganizationSerializer。我怎样才能做到这一点?
我很确定这是有文档记录的,但我很难跟踪和找到任何例子。
来自文档
多态关系 多态关系通过指定关系来序列化,就像任何其他关联一样。例如: 类PictureSerializer 可以通过重写serializer_for来指定序列化程序。有关多态关系的更多上下文,请参见每个适配器的测试。 重写关联序列化器查找 如果要为关联定义特定的序列化程序查找,则可以重写ActiveModel::Serializer.serializer_for方法以根据定义的条件返回序列化程序类。 类MySerializer
发布于 2017-03-29 21:13:50
您可以使用belongs_to :notifiable &block选项来指定合适的序列化程序。
https://stackoverflow.com/questions/43084037
复制相似问题