2009-03-05 21 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

は、イーガーローディング機能を使用します。

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

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

結果のデータセットは、現在経由ショーの時間と一緒に映画にアクセスが含まれます

コースこれは、より読みやすいリストを作成しようとしている場合、グループ化の問題を引き起こします。 group_byメソッドを使用すると、かなり好きなことをすることができます:

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

希望するものがあります。

-hris

関連する問題