gpt4 book ai didi

ruby-on-rails - Rails 对象关系和 JSON 渲染

转载 作者:IT老高 更新时间:2023-10-28 12:46:22 24 4
gpt4 key购买 nike

免责声明,我对 Rails 知之甚少。我会尽量简洁。给定 Rails 中的以下模型关系:

class ModelA < ActiveRecord::Base
belongs_to :ModelB

...

class ModelB < ActiveRecord::Base
has_many :ModelA

当调用 ModelA Controller 的 show Action 时,返回的 JSON 应该显示作为 ObjectB 的子级的所有 ObjectA,而相关的 ObjectA 是其子级。

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

我应该看到:

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

最佳答案

默认情况下,您只会在上面的示例中获得代表 modelb 的 JSON。但是,您可以告诉 Rails 也包含其他相关对象:

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 }})

您可以根据需要将它们嵌套得尽可能深(假设 ModelB 也有_many ModelC):

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

如果要包含多个子模型关联,可以执行以下操作:

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

关于ruby-on-rails - Rails 对象关系和 JSON 渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3462754/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com