我正在为我的应用程序使用Active Model Serializer
gem。现在我有这样的情况,用户可以有一个头像,这只是一个媒介的ID。
我已经把头像信息保存到Redis中了。所以现在我在序列化JSON中显示头像的方法是:
class UserSerializer < ActiveModel::Serializer
include Avatar
attributes :id,
:name,
:email,
:role,
:avatar
def avatar
Medium.find(self.current_avatar)[0]
end
#has_one :avatar, serializer: AvatarSerializer
has_many :media, :comments
url :user
end
我查询Redis以了解要在数据库中查找什么介质,然后在:avatar
键中使用结果。
在代码的下面还有一行注解掉了,这是我在https://github.com/rails-api/active_model_serializers/页面上找到的关于在序列化程序内部使用自定义序列化程序的唯一方法。
现在来谈谈我的问题。现在:avatar
就像它在数据库中一样,但是我希望它在作为JSON提供之前被序列化。在这种情况下,我该怎么做呢?
2条答案
按热度按时间slhcrj9b1#
您需要序列化头像类:
那你就用这个办法:
wb1gzix02#
根据文档,如果您需要自定义序列化程序,只需添加:
render json: avatar, serializer: AvatarSerializer
或者您的序列化程序的名称可以是什么,下面是这些文档:
https://github.com/rails-api/active_model_serializers/blob/v0.10.6/docs/general/serializers.md#scope