有几个孩子的桌子

时间:2012-01-21 18:35:14

标签: ruby-on-rails ruby ruby-on-rails-3

所以我有一些表:TvShow,Episodes和Games。

TvShow - has_many Episodes, has_many Games
Episodes - belongs_to TvShow, has_many Games
Games - belongs_to TvShow, belongs_to Episodes.

Games表中包含tv_show_id和episode_id的字段。剧集ID可以是空白的,因为一些游戏与节目相关联而不是特定剧集。我列出每个电视节目剧集,以及与该剧集相关的任何游戏都没有问题。

<% @tvshows.each do |tv| %>
<div class="gamebox">
<h3><%= tv.title -%></h3>
    <% tv.episodes.each do |episode| -%>
    <%= episode.title %><br />
    <ul>
        <% episode.tv_show_games.each do |g| %>
        <li><%= g.title %> (<%= g.user.name %>)</li>
        <% end %>
    </ul> 
        <% end -%>
</div>
<% end -%>

但是,我也希望能够只抓住那些没有剧集关联的游戏。这样做的最佳方法是什么?我意识到我可能不得不创建一个只查询具有空episode_id字段的游戏的方法,但除此之外,我有点卡住了。非常感谢任何帮助!

2 个答案:

答案 0 :(得分:0)

你能试试吗?

rails 3

@game = Game.where(:episode_id => nil)

rails 2

@game= Game.find_all_by_episode_id(nil)

答案 1 :(得分:0)

您可以使用SQL where子句

@games = Game.where('episode_id IS NULL')

或Rails 2选择器

@games = Game.where(:episode_id => nil)

或Rails 3选择器

@games = Game.where(episode_id: nil)