Ruby on Rails加入表关系

问题描述:

我想用我的连接表“显示”来获取电影列表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没有做手工?

谢谢

@showing_list是一个数组。

@showing_list.collect(&:movie).uniq 

尝试:

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

使用预先加载能力:

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