Ruby on Rails Присоединиться к таблице отношений - PullRequest
0 голосов
/ 06 марта 2009

Я пытаюсь использовать свою таблицу соединений "Показывать", чтобы получить список фильмов

Я пытался использовать этот код, но он не работает.


@showing_list = Showing.find_sorted_showings("time")

@movie_list = @showing_list.movies <-- NoMethodError 

Вот мой Показ класс


class Showing < ActiveRecord::Base
belongs_to :movie


def self.find_sorted_showings(order)
    find(:all, :order => order)
end
end

Как я могу изменить свой класс показа, чтобы получить список перемещений из списка показа, не делая это вручную?

Спасибо

Ответы [ 3 ]

3 голосов
/ 06 марта 2009

@ показывая_лист является массивом.

@showing_list.collect(&:movie).uniq
2 голосов
/ 06 марта 2009

Используйте возможность быстрой загрузки:

   def self.find_sorted_showings(order)
    find(:all, :order => order, :include => :movie)
   end

Полученный набор данных теперь будет включать фильм вместе со временем показа, доступным через:

@showing.each do |show_time|
  show_time.movie.title
end

Конечно, это создает проблемы с группировкой, если вы хотите создать более читаемый список. но вы можете сделать некоторые довольно причудливые вещи с помощью метода group_by, например:

find(:all, :order => order, :include => :movie).group_by {|s| s.show_time}

Надеюсь, это поможет.

-Крис

1 голос
/ 06 марта 2009

Попробуйте:

named_scope :find_sorted_showings, lambda { |order|
  { :order => order }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...