Domanda

Sto provando a utilizzare la mia tabella di join " mostrando " per ottenere un elenco di film

Stavo cercando di usare questo codice ma non funziona.


@showing_list = Showing.find_sorted_showings("time")

@movie_list = @showing_list.movies <-- NoMethodError 

Ecco la mia classe di dimostrazione


class Showing < ActiveRecord::Base
belongs_to :movie


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

Come posso cambiare la mia classe di proiezione per ottenere la move_list dalla mostra_list senza farlo manualmente?

Grazie

È stato utile?

Soluzione

@showing_list è un array.

@showing_list.collect(&:movie).uniq

Altri suggerimenti

Usa la capacità di caricamento desideroso:

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

Il set di dati risultante includerà ora il filmato insieme agli orari degli spettacoli accessibili tramite:

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

Naturalmente, ciò pone problemi di raggruppamento se stai cercando di creare un elenco più leggibile. ma puoi fare cose piuttosto fantasiose con il metodo group_by, come:

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

Spero che sia d'aiuto.

-Chris

Prova:

named_scope :find_sorted_showings, lambda { |order|
  { :order => order }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top