【问题标题】:How to pass parameters Active Model Serializer to another Serializer?如何将参数 Active Model Serializer 传递给另一个 Serializer?
【发布时间】:2020-04-08 11:18:34
【问题描述】:

发送参数有问题。 我有 user_serializer 和 book_serializer,我想将 user_id 发送到 user_serializer 中的 book_serializer。像这样:

class UserSerializer < ActiveModel::Serializer
   attributes :id

   has_many :books, serializer: BookSerializer, your_option_name: object.id
end

然后是 BookSerializer

class BookSerializer < ActiveModel::Serializer
   attributes :id, :test

  def test
     @instance_options[:your_option_name]
  end
end

但它不工作,得到空值。

有什么想法吗?十分感谢。

【问题讨论】:

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


    【解决方案1】:

    您传递给has_many ... 的参数实际上是用来创建一个HasManyReflection 对象,它只接受一些非常具体的值,并且它也不会进一步传递它的参数。

    将自定义参数传递给嵌套序列化程序的正确方法是通过build_association 方法或直接如下:

    class UserSerializer < ActiveModel::Serializer
      attributes :id, books
    
      def books
        ActiveModel::SerializableResource.new(object.books,  each_serializer: BookSerializer, your_option_name: object.id) 
      end
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-20
      • 2021-11-05
      • 1970-01-01
      • 2019-03-02
      • 1970-01-01
      • 2017-01-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多