gpt4 book ai didi

ruby-on-rails-4 - 如何将参数传递给ActiveModel::ArraySerializer?

转载 作者:行者123 更新时间:2023-12-04 13:31:36 25 4
gpt4 key购买 nike

我需要从ItemSerializer中访问current_user_id
有办法实现吗?我什至有一个肮脏的hack :)

我知道serialization_options哈希的存在(来自How to pass parameters to ActiveModel serializer
),但仅适用于render命令(如果我正确的话),因此可以执行以下操作:

def action
render json: @model, option_name: value
end

class ModelSerializer::ActiveModel::Serializer
def some_method
puts serialization_options[:option_name]
end
end

但就我而言,我使用 ArraySerializerrender命令外部生成json哈希,如下所示:
positions_results = {}    
positions_results[swimlane_id][column_id] =
ActiveModel::ArraySerializer.new(@account.items,
each_serializer: ItemSerializer,
current_user_id: current_user.id) # <---- Does not work

最佳答案

您可以通过2种方式来做到这一点:

  • 将它们传递给serialization_options,但是据我所知,正如您所说,您只能在 Controller 的响应中使用它:
  • 如您所述,将它们通过contextscope传递,几乎相同:
    # same as with scope 
    ActiveModel::ArraySerializer.new(@account.items, each_serializer: ItemSerializer, context: {current_user_id: 31337})

    # In serializer:
    class ItemSerializer < ActiveModel::Serializer
    attributes :scope, :user_id

    def user_id
    context[:current_user_id]
    end
    end
  • 关于ruby-on-rails-4 - 如何将参数传递给ActiveModel::ArraySerializer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32439568/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com