Question

J'essaie d'utiliser ma table de jointure " montrant " pour obtenir une liste de films

J'essayais d'utiliser ce code mais cela ne fonctionne pas.

@showing_list = Showing.find_sorted_showings("time")

@movie_list = @showing_list.movies <-- NoMethodError 

Voici ma classe de présentation

class Showing < ActiveRecord::Base
belongs_to :movie


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

Comment puis-je changer ma classe d'affichage pour obtenir la liste de déménagement de la liste de diffusion sans la faire manuellement?

Merci

Était-ce utile?

La solution

@showing_list est un tableau.

@showing_list.collect(&:movie).uniq

Autres conseils

Utilisez la capacité de chargement rapide:

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

L'ensemble de données résultant inclura désormais le film avec les horaires de diffusion accessibles via:

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

Bien sûr, cela pose des problèmes de regroupement si vous souhaitez créer une liste plus lisible. mais vous pouvez faire des choses très sophistiquées avec la méthode group_by, comme:

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

L’espoir que cela aide.

-Chris

Essayez:

named_scope :find_sorted_showings, lambda { |order|
  { :order => order }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top