gpt4 book ai didi

ruby - 以相同的 JSON 父项和子项返回数据库结果

转载 作者:太空宇宙 更新时间:2023-11-03 17:50:01 24 4
gpt4 key购买 nike

我有 Team 和 Players 类,我想以一个 JSON 字符串的形式返回数据,其中包含 Team 信息,但同时显示有关球员的所有信息。

class Team < ActiveRecord::Base
has_many :players
end

class Players < ActiveRecord::Base
belongs_to :team
end

我知道如何检索有关球队和球员的信息,但不是在同一个查询中。另一个问题是我不知道如何将结果 JSON 合并到一个 JSON 中。

team = Team.last.to_json
player = team.players.to_json
  1. 如何在同一查询中查询有关团队和球员的信息。我试过:

    @team = Team.includes(:players).where(players: {team_id: Team.last}).last.to_json

    它只返回有关团队的信息。我想要一个像这样的 JSON:

    -id
    -name
    -players
    -player
    -player
  2. 如果不可能,我如何将来自两个查询的所有信息合并到一个 JSON 中。

最佳答案

你可以写一个“join”来将球队中的球员与球队信息结合起来。届时,您将拥有一个包含创建 JSON 所需信息的结构。有关详细信息,请参阅 Active Record 文档中的“12 Joining Tables”。

或者,您可以进行两个单独的查询,然后创建稍微复杂一点的 JSON 散列或数组,以便将两组数据输出到一个更大的序列化对象中。例如:

require 'json'

team = {
'name' => 'bears'
}

players = {
'1' => 'fred',
'2' => 'joe'
}

puts ({
'team' => team,
'players' => players
}).to_json

这是输出:

{"team":{"name":"bears"},"players":{"1":"fred","2":"joe"}}

这是返回给 Ruby 对象的数据:

data = '{"team":{"name":"bears"},"players":{"1":"fred","2":"joe"}}'
JSON[data]
# => {"team"=>{"name"=>"bears"}, "players"=>{"1"=>"fred", "2"=>"joe"}}

此外,由于您使用的是 Sinatra,因此没有必要使用 Active Record。 Sequel是一个非常好的 ORM,在使用 Sinatra 时是我个人最喜欢的。您可能会发现它更易于使用。

关于ruby - 以相同的 JSON 父项和子项返回数据库结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26467474/

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