【发布时间】:2016-03-01 17:42:24
【问题描述】:
我有 3 张桌子,活动,游戏,活动游戏(加入其他人)。我正在尝试创建一个列出每个事件的页面,以及将在该事件中进行的每个游戏。该页面当前正在运行,但正在对 HTML 表中的每一行进行新的数据库查询。我正在从控制器发送@events = Event.all 并以这种方式访问信息。
<% @events.each do |event| %>
<tr>
<td><a href="/events/<%= event.id %>"><%= event.title %></a></td>
<td><a href="/users/<%= event.user.id %>"><%= event.user.username %></a></td>
<td><%= event.description %></td>
<td>
<% event.games.each do |game| %>
<a href='/games/<%= game.id %>'><%= game.name %></a>
<% end %>
</td>
我试图通过创建一个包含所有信息的新查询来更改从控制器发送的内容。它并没有按照我的预期工作,问题是当我这样做时,@events.each 事件会被重复,但是会有很多游戏出现。
@events = Event.joins("LEFT JOIN eventgames ON events.id = eventgames.event_id")
.select("events.*")
.group("events.id")
.joins("LEFT JOIN games ON eventgames.game_id = games.id")
.select("games.id as gameid, games.name")
.group("games.id")
我试过了,但显然我的分组不正确。我将如何对它进行分组,以便每个事件 ID 只有 1 个事件,同时还能够遍历附加到事件的游戏?
【问题讨论】:
标签: sql ruby-on-rails ruby postgresql activerecord