繁体   English   中英

在Rails 4中简化.to_json数组结果

[英]Simplify .to_json array result in Rails 4

我有以下代码:

@post.to_json(include: {tags: { only: :name} } )

产生以下输出:

{ ... "tags": [{"name": "Lorem"}, {"name": "ipsum"}, {"name": "cupcake"}] ... }

当我想要的是:

{ ... "tags": ["Lorem", "ipsum", "cupcake"] ... }

有任何想法吗?

很简单,编写自己的序列化程序,而不是尝试破解to_json

class PostWithTagsSerializer
  attr_reader :object

  def initialize(object)
    @object = object
  end

  def as_json(*)
    hash = object.as_json
    hash[:tags] = object.tags.pluck(:name)
    hash
  end

  def to_json(*)
    as_json.to_json
  edn
end

然后简单地使用

PostWithTagsSerializer.new(@post).to_json

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM