rails通过关联获取相关对象

时间:2013-11-18 08:57:56

标签: ruby-on-rails rails-activerecord relation

好的,这是另一个令人费解的问题。

我有秀。它有很多剧集。一个节目可以有很多频道(即类别)。

我有一集。我可以使用episode.show.channels来获取剧集节目所属的频道。很干净。

这里是踢球者:我想获得一个随机的x个剧集,其剧集也属于与当前剧集相同的频道。

1 个答案:

答案 0 :(得分:0)

只是我的两分钱,但让你的模型组织起来并不容易 -

Channel (Category or Genre)
  has_many :shows

Show 
  belongs_to :channel
  has_many :episodes

Episode
  belongs_to :show

想想你如何在电视指南中查找某些内容 - 首先是具有一系列节目的流派(科幻,动作,恐怖等),然后从你选择的节目列表中选择一个有很多可供选择的剧集。

这也会让你的逻辑更容易很多 - 要在给定的频道中播放节目,请使用以下内容:

@channel = Channel.find_by_whatever
@shows = @channel.shows 

并在同一频道中获得随机x次剧集

@random_episodes = []
@shows.each { |s| @random_episodes << s.episodes.sample(x) }

您选择的剧集数量不是随机的(每集节目中的3集可能不是一个糟糕的起点) - 但所选的剧集是随机挑选的 - 所以如果您重新加载页面,您将会每次看不同的剧集。