使用Rails的两个不同的JSON视图

时间:2011-08-02 13:32:27

标签: json ruby-on-rails-3 serialization

考虑以下情况,我有一个Job类,它有输入和一个输出。我的工作中有以下内容.rb

  def as_json(options={})
    super(include: [:inputs,:output])
  end

所以这一直很好用,我的JobController已经完成了格式化和有用的JSON响应。

我正在开发一种向用户显示Job JSON版本的方法,只显示输入,所以我做了以下操作并得到了一些奇怪的行为:

@job.to_json(include: [:inputs])

此方法忽略传递给它的选项,并在模型上调用 as_json 方法

所以我的问题是,一旦你定义了 as_json ,你如何获得对象的不同json 视图

谢谢!

1 个答案:

答案 0 :(得分:0)

默认情况下,您可以尝试传递输出和输入:

def as_json( options = { :include => {:inputs, :output} } )
   super(options)
end

然后您可以通过特殊情况的选项:

@job.as_json( :include => {:inputs} )

此处有更多信息:http://jonathanjulian.com/2010/04/rails-to_json-or-as_json/