我需要创建一个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
答案 0 :(得分:0)
我假设这样说:用户属于许多关系,并且关系有很多用户。在这种情况下,你可以这样做:
# 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