gpt4 book ai didi

ruby-on-rails - 将 ActiveRecord 对象分组并输出到 JSON

转载 作者:行者123 更新时间:2023-12-04 18:20:16 25 4
gpt4 key购买 nike

我想知道如何才能使这项工作。假设我有一个属于客户的项目模型。我想将这些特定项目输出到 JSON,但它们需要按客户分组。我认为这会起作用:

@projects.group_by(&:client).to_json

这几乎可以工作,除了 to_json 方法没有在客户端上调用 .to_json ,因此对于客户端,您可以在 JSON 中得到它:
"#<Client:0x1051d4fb0>":[{ "project":{"name":"My Only Project", "client_id":1}}]

但我真的需要这样:
{"client":{"name":"Home Workers Unite", "id":1, "projects":[{"name":"My Only Project","client_id":1}]}}

任何帮助表示赞赏!

最佳答案

正如@LarryK 所说,您想要输出的json 不是有效的json。在 json 中,键只能是字符串,而 ruby​​ 可以将对象作为键。另外,我建议 json 响应更像以下内容:

{clients: [
{
"name":"Home Workers Unite",
"id":1,
"projects": [
{"name":"My First Project", "id":1},
{"name":"My Second Project", "id":2}
]
}
]
}

您已经有可用的项目。你也有按客户分组的代码,但是一个简单的 to_json由此产生的哈希在这里不适合。您需要进一步操作分组响应才能直接使用 to_json :
results = {clients: []}
@projects.group_by(&:client).each do |client, projects|
results[:clients] << {
id: client.id,
name: client.name
projects: projects
}
end
results.to_json

这是解决方案的 ruby​​/rails 版本。但是,如果您有一个 json 繁重的应用程序,我建议您使用一些 gem( jbuilderrabl 或任何其他)来创建所需的响应。

PS:代码未经测试

关于ruby-on-rails - 将 ActiveRecord 对象分组并输出到 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10838018/

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