Ruby:如何将参数传递给 oj_serializers

Ruby: How to pass parameters to oj_serializers

提问人:Steven 提问时间:7/4/2023 更新时间:7/4/2023 访问量:46

问:

我正在使用 Oj 序列化器:https://github.com/ElMassimo/oj_serializers

我想知道如何传递一些变量(例如。CurrentCurrent)从控制器到串行器?

例如,控制器:

class AlbumsController < ApplicationController
def index
    render json: { albums: AlbumSerializer.many(albums) }
  end
end
JSON Ruby-on-Rails Ruby 序列化

评论


答:

1赞 Vasily Kolesnikov 7/4/2023 #1

根据文档

class ApplicationController < ActionController::Base
  before_action { Thread.current[:current_controller] = self }
end

class BaseJsonSerializer < Oj::Serializer
  def scope
    @scope ||= Thread.current[:current_controller]
  end

  def current_user
    @current_user ||= scope&.current_user
  end
end

注意:这是一种不好的做法。