Ruby on rails 如何在rails中将两个查询合并成一个JSON文件?

Ruby on rails 如何在rails中将两个查询合并成一个JSON文件?,ruby-on-rails,json,Ruby On Rails,Json,我需要创建一个d3图形。这需要一个.json文件作为数据源。 这个json文件的格式如下 { "nodes":[ {"name":"Myriel"}, {"name":"Jonny"} ], "links":[ {"source":1,"target":2} ] } 为了创建它,我需要查询数据库中的两个表。出于格式化的原因,最简单的方法是实际创建两个查询,然后将它们连接到一个json中(json文件很奇怪,因为“source”指的是节点在节点数组中的位置

我需要创建一个d3图形。这需要一个.json文件作为数据源。 这个json文件的格式如下

{
  "nodes":[
    {"name":"Myriel"},
    {"name":"Jonny"}
  ],
  "links":[
    {"source":1,"target":2}
  ]
}

为了创建它,我需要查询数据库中的两个表。出于格式化的原因,最简单的方法是实际创建两个查询,然后将它们连接到一个json中(json文件很奇怪,因为“source”指的是节点在节点数组中的位置,而不是数据库id,因此需要这样做)。用户与关系的关联为一个用户对多个关系

在我的模型
user.rb
中,我有两个简单的查询

def User.allnames
    User.pluck(:name)
  end

  def User.allfollowers
    Relationship.pluck(:follower_id, :following_id)
  end
然后,我想结合这两个查询的输出,在我的控制器中以上述格式创建一个json(下面的代码毫无意义,但说明了我要做的事情:

def data
  #Bring in the two queries from the model
  @usersall = User.allnames
@userallfollowers = User.allfollowers

#Somehow combine them
#Then output json as below I guess

    respond_to do |format|
      format.html # index.html.erb
      format.json {  render json: @users }

      end
end

我假设你说:一个用户属于多个关系,而一个关系有多个用户。在这种情况下,你可以这样做:

# In your controller method
@users = User.all

# other code ...

respond_to do |format|
  format.json { render json: @users.to_json( only: [:name], include: { :relationship => { only: [:follower_id, :following_id ] } }  })
end

结合
User.pull(:name)
User.pull(:id,:name)的目的是什么
?第一个是第二个的子集,将它们组合在一起没有任何意义。好的观点。我已经更改了问题。请注意:
用户
模型和
关系
模型之间是否有任何关系?用户与关系的关系是多对一。我已经添加到主要问题中。好的。但问题是这将根据json文件中有多少关系重复json文件中的名称。名称之间的链接由源值和目标值决定。源值由名称在节点数组中的位置决定。因此,相同的名称将具有不同的源值,并将使用incor多次打印到屏幕上rect链接。因此,我希望根据问题连接两个单独的查询。我还得到了错误语法错误,意外的“}”,期望tASSOC