【发布时间】:2019-05-01 15:10:47
【问题描述】:
我有 2 个关联模型:
class User < ActiveRecord::Base
has_many :notifications, foreign_key: :recipient_id
end
class Notification < ActiveRecord::Base
belongs_to :recipient, class_name: 'User'
belongs_to :actor, class_name: 'User'
belongs_to :notifiable, polymorphic: true
end
我在加载 :user 时使用序列化程序:
class API::UserSerializer < ActiveModel::Serializer
attributes :id, :email, :auth_token, :location_id, :notifications
has_many :notifications, foreign_key: :recipient_id, each_serializer: API::NotificationSerializer
end
它又为:notifications 使用序列化程序:
class API::NotificationSerializer < ActiveModel::Serializer
attributes :id, :recipient_id, :actor_id, :notifiable_id, :read_at, :action, :recipient, :actor, :notifiable_type
belongs_to :recipient, serializer: API::RecipientSerializer
belongs_to :actor
belongs_to :notifiable, polymorphic: true
end
但是,从未使用过API::RecipientSerializer,而是返回整个:recipient。我做错了什么?
另外,这里是 API::RecipientSerializer 的好方法:
class API::RecipientSerializer < ActiveModel::Serializer
attributes :id
end
【问题讨论】:
-
如果将
has_many :notifications, foreign_key: :recipient_id, each_serializer: API::NotificationSerializer更改为has_many :notifications, foreign_key: :recipient_id, serializer: API::NotificationSerializer会发生什么?通知是否正确序列化? (只有类中序列化的属性?)
标签: ruby-on-rails serialization active-model-serializers