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