2009-03-05 73 views
0

我想用我的連接表「顯示」來獲取電影列表Ruby on Rails加入表關係

我試圖使用此代碼,但它不起作用。


@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 

我怎樣才能改變我的顯示類,以獲得從showing_list的move_list沒有做手工?

謝謝

回答

3

@showing_list是一個數組。

@showing_list.collect(&:movie).uniq 
1

嘗試:

named_scope :find_sorted_showings, lambda { |order| 
    { :order => order } 
} 
2

使用預先加載能力:

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

產生的數據集,現在將包括電影與節目一起訪問時間通過:

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

Of cours e,如果您希望創建更具可讀性的列表,這會造成分組問題。但你可以用group_by方法做一些漂亮的花哨的東西,比如:

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

希望有幫助。

-Chris