【问题标题】:Custom field in ActiveModel Serializer with another serializerActiveModel 序列化器中的自定义字段与另一个序列化器
【发布时间】:2018-04-12 09:36:28
【问题描述】:

我有Userhas_many :sessions 的模型。但是对于一个特定的请求,我只想发送一个基于请求设备平台(iOS、Android)的会话。

问题是我有单独的UserSerializerUserSessionSerializer,我想将UserSessionSerializer 作为UserSerializer 中的选项传递给:session 字段。像这样:

# UsersController
render json: @user, serializer: UserSerializer, session: @session # @user's session founded by platform

# UserSerializer
attributes :id, :email, :username, :session

def session
  @instance_options[:session], serializer: UserSessionSerializer
end

这是不可能的,因为据我所知,我只能在 has_onehas_many 中传递序列化程序。但我不想用has_many 以 JSON 格式呈现所有用户会话,只创建一个。

感谢您的帮助!

【问题讨论】:

    标签: ruby-on-rails active-model-serializers


    【解决方案1】:

    您的代码很好,只需使用UserSessionSerializer.new 而不是serializer: UserSessionSerializer

    render json: { user: UserSerializer.new(@user, session: @session) }
    
    attributes :id, :email, :username, :session
    
    def session
      UserSessionSerializer.new(self.instance_options[:session]) if self.instance_options[:session].present?
    end
    

    【讨论】:

    • 太棒了!谢谢!我知道这是可能的;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-21
    • 1970-01-01
    • 2018-07-12
    • 2016-02-12
    • 1970-01-01
    • 2022-07-21
    • 2016-03-23
    相关资源
    最近更新 更多