2009-03-05 7 views
0

Ich versuche, meine Join-Tabelle „zeigt“ zu verwenden, um eine Liste der Filme zu bekommenRuby on Rails Join Tabellenbeziehung

ich diesen Code zu verwenden, wurde versucht, aber es funktioniert nicht.


@showing_list = Showing.find_sorted_showings("time") 

@movie_list = @showing_list.movies <-- NoMethodError 

Hier ist meine Angezeigt Klasse


class Showing < ActiveRecord::Base 
belongs_to :movie 


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

Wie kann ich meine zeigt Klasse ändern, um den move_list vom showing_list zu bekommen, ohne es manuell zu tun?

Danke

Antwort

3

@showing_list ein Array ist.

@showing_list.collect(&:movie).uniq 
1

Versuchen:

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

die eifrig Belastbarkeit Verwendung:

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

Der resultierende Datensatz jetzt wird den Film zusammen mit der Sendezeiten erreichbar über umfassen:

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

Natürlich Dies führt zu Gruppierungsproblemen, wenn Sie eine besser lesbare Liste erstellen möchten. aber Sie können einige ziemlich ausgefallene Sachen mit der group_by Methode, wie tun:

Hoffnung, die hilft.

-Chris