2015-12-02 35 views
0

我有這樣的代碼:簡化.to_json陣列結果的Rails 4

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

產生這樣的輸出:當我要的是

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

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

任何想法?

回答

1

這很簡單,寫你自己的序列化程序,而不是試圖破解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