【问题标题】:Ruby on Rails Join table relationshipRuby on Rails 连接表关系
【发布时间】:2009-03-05 22:58:50
【问题描述】:
我正在尝试使用我的连接表“显示”来获取电影列表
我试图使用此代码,但它不起作用。
@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 而无需手动操作?
谢谢
【问题讨论】:
标签:
ruby-on-rails
activerecord
join
【解决方案1】:
@showing_list 是一个数组。
@showing_list.collect(&:movie).uniq
【解决方案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}
希望对您有所帮助。
-克里斯
【解决方案3】:
试试:
named_scope :find_sorted_showings, lambda { |order|
{ :order => order }
}