Ruby on Rails Join Tabellenbeziehung
-
03-07-2019 - |
Frage
Ich versuche Tisch zu verwenden, um meine join „zeigt“, um eine Liste von Filmen zu bekommen
Ich habe versucht, diesen Code zu verwenden, 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
Lösung
@showing_list ist ein Array.
@showing_list.collect(&:movie).uniq
Andere Tipps
Mit der eifrigen Belastbarkeit:
def self.find_sorted_showings(order)
find(:all, :order => order, :include => :movie)
end
Der resultierende Datensatz enthält nun den Film zusammen mit den Sendezeiten erreichbar über:
@showing.each do |show_time|
show_time.movie.title
end
Natürlich stellt diese Fragen Gruppierung, wenn Sie suchen eine besser lesbare Liste zu erstellen. Sie können jedoch ein paar ziemlich fancy stuff mit der group_by Methode tun, wie:
find(:all, :order => order, :include => :movie).group_by {|s| s.show_time}
Ich hoffe, das hilft.
-Chris
Versuchen:
named_scope :find_sorted_showings, lambda { |order|
{ :order => order }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow