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

War es hilfreich?

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
scroll top