【问题标题】:Rails 4.2 Active Record Serializer JSON format issueRails 4.2 Active Record Serializer JSON 格式问题
【发布时间】:2015-02-26 21:33:25
【问题描述】:

我在 Rails 上有一个序列化器,里面有另一个嵌套序列化器,像这样

class FeedSerializer < ActiveModel::Serializer
  attributes :id

  has_one :user

  def user
    if object.anonymous
        nil
    else
        UserFeedSerializer.new(object.user)
    end
  end
end

我希望 JSON 响应是这样的

{
    "feed": {
        "id": 10
        "user": {
            "id": 10
        }
    }
}

但它却是这样做的:

{
    "feed": {
        "id": 10
        "user": {
            "user_feed": {
                "id": 10
            }
        }
    }
}

为什么它包括一个额外的巢?

【问题讨论】:

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


    【解决方案1】:

    因为您传递的是用户关系的序列化程序,而不是 User 实例本身。尝试通过将 root false 放在 UserFeedSerializer 的顶部来禁用根属性包装。

    【讨论】:

    • 太感谢了!如果我想使用 UserFeedSerializer 作为不同提要的根而不是仅在类文件中添加 self.root = false,您知道是否可以打开/关闭此功能?
    • 专门为这种情况子类化它。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-25
    相关资源
    最近更新 更多