如何将 ActiveModel::Serializer :has_many 关联的密钥格式(即驼峰式)指定为一次性选项(不是全局配置)?

How to specify the key format (i.e. camelcase) for an ActiveModel::Serializer :has_many association as a one-off option (not global config)?

我有一个像这样的序列化程序:

class FooSerializer < ActiveModel::Serializer
  attributes :id, :name

  has_many :foo_bars, serializer: BarSerializer
end

class BarSerializer < ActiveModel::Serializer
  attributes :id, :acronym
end

我的问题是,在实例化序列化程序并对其调用 as_json 时,我得到以下信息:

$ foo = Foo.first
$ s = FooSerializer.new(foo)
$ s.as_json

$ => {
    :foo => {
        :id => 1,
        :name => "Foo",
        :foo_bars => [
            {
              :id => 1,
              :acronym => "F1",
            },
            {
              :id => 2,
              :acronym => "F2",
            },
        ]
    }
}

但我的前端 API 期望接收驼峰 fooBars 而不是蛇形 foo_bars。如何配置序列化程序以输出 foo_bars 与键 fooBars

的关联

(发布这个是因为我自己弄明白了,但找不到任何地方的答案,希望这能帮助别人,甚至我自己,当我有一天不可避免地再次 google 时......)

很容易做到。只需将 key 选项添加到序列化程序的 has_many

class FooSerializer < ActiveModel::Serializer
  attributes :id, :name

  has_many :foo_bars, serializer: BarSerializer, key: :fooBars
end

完成。现在你的序列化器将输出 has_many 和 fooBars 而不是 foo_bars