Просто мои два цента, но не было бы легче иметь ваши модели организованы как это -
Channel (Category or Genre)
has_many :shows
Show
belongs_to :channel
has_many :episodes
Episode
belongs_to :show
Подумайте о том, как вы будете выглядеть что-то в TV Guide - сначала Жанр (Sci -Fi, Action, Horror и т. Д.), Который имеет множество шоу, и из этого списка вы выбираете один, который затем имеет много эпизодов на выбор.
Это также сделает вашу логику много проще - Чтобы получить шоу в данном канале, использовать что-то вроде этого:
@channel = Channel.find_by_whatever
@shows = @channel.shows
и получить случайное х количество эпизодов в том же канале
@random_episodes = []
@shows.each { |s| @random_episodes << s.episodes.sample(x) }
количество эпизодов вы выбирающих не является случайным (3 эпизода из каждого шоу, вероятно, не плохо стартовое место) - но эпизоды, которые выбираются выбраны случайным образом - так что если вы перезагрузите вы увидите di каждый раз.
То, что вы описали, на самом деле является тем, как я его настроил - возможно, я объяснил это неправильно - но у меня есть habtm для шоу и каналов - потому что одно шоу может быть на нескольких каналах, а на одном шоу может быть много шоу. Я попробую то, что вы создали; было поздно не думать о том, чтобы бросить их в промежуточный массив, чтобы вырваться. – grimmwerks
Также проснулся, думая, если у меня есть has_many: channels,: through =>: show, тогда я могу просто получить каналы каждого эпизода и быстро просмотреть шоу, не путешествуя по цепочке, но не должен иметь значения. – grimmwerks
круто, дайте мне знать, если это сработает! – dax