Disclaimer, I know very little about Rails. I'll try to be succinct. Given the following model relations in Rails:

class ModelA < ActiveRecord::Base
  belongs_to :ModelB

...

class ModelB < ActiveRecord::Base
    has_many :ModelA

调用ModelA控制器的show操作时,返回的JSON应该显示所有ObjectA,这些ObjectA是ObjectB的子对象,而ObjectA是ObjectB的子对象.

因此,如果我有一个ObjectB,其中包含ID为1、2和3的ObjectA,然后访问:/modela/1.json

我应该看到:

{
  "modelb": {
    "id": "1",
    "modela": [insert the ModelA JSON for ID's 1, 2 and 3]
  }
}

推荐答案

By default you'll only get the JSON that represents modelb in your example above. But, you can tell Rails to include the other related objects as well:

def export
  @export_data = ModelA.find(params[:id])
  respond_to do |format|
    format.html
    format.json { render :json => @export_data.to_json(:include => :modelb) }
  end
end

如果不想在导出中看到某些字段,甚至可以告诉它排除这些字段:

render :json => @export_data.to_json(:include => { :modelb => { :except => [:created_at, updated_at]}})

或者,只包括某些字段:

render :json => @export_data.to_json(:include => { :modelb => { :only => :name }})

And you can nest those as deeply as you need (let's say that ModelB also has_many ModelC):

render :json => @export_data.to_json(:include => { :modelb => { :include => :modelc }})

If you want to include multiple child model associations, you can do the following:

render :json => @export_data.to_json(include: [:modelA, :modelB, :modelN...])

Json相关问答推荐

在循环中将变量添加到 bash 数组

为什么JsonConvert反序列化对象以int但不长失败

如何将西里尔字母转换为 utf16

如何使用 Swiftui 判断 JSON 是否缺少键值对

将嵌套的 JSON 对象规范化为 Pandas 数据框

如何在 Asp.net Core Web Api 中默认使用 Newtonsoft.Json?

未处理的异常:InternalLinkedHashMap' 不是 'List 类型的子类型

如何在 asp.net core 3 中设置 json 序列化程序设置?

使用 axios 在 POST multipart/form-data 请求中发送文件和 json

我所有的 .json 文件在从 schemastore.azurewebsites.net 加载参考/模式时都有问题

pandas.io.json.json_normalize 带有非常嵌套的 json

我可以将字符串变量传递给 jq 而不是文件吗?

从 VS 2017 Azure Function 开发中的 local.settings.json 读取值

fetch() 输入意外结束

在 React 中导入 JSON 文件

无法将空值放入 JSON 对象

如何使用 Swift Decodable 协议解码嵌套的 JSON 结构?

在 Ubuntu 10.04 上安装 jq JSON 处理器

有没有办法将 BigQuery 表的架构导出为 JSON?

React Js: Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0