Ruby on Rails加入表关系

时间:2009-03-05 22:58:50

标签: ruby-on-rails activerecord join

我正在尝试使用我的联接表“显示”来获取电影列表

我试图使用此代码,但它不起作用。


@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

如何在不手动操作的情况下更改我的显示类以从shows_list获取move_list?

谢谢

3 个答案:

答案 0 :(得分:3)

@showing_list是一个数组。

@showing_list.collect(&:movie).uniq

答案 1 :(得分:2)

使用预先加载功能:

   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}

希望有所帮助。

-Chris

答案 2 :(得分:1)

尝试:

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