Pergunta

Eu estou tentando usar o meu unir a tabela "mostrando" para obter uma lista de filmes

Eu estava tentando usar este código, mas ele não funciona.


@showing_list = Showing.find_sorted_showings("time")

@movie_list = @showing_list.movies <-- NoMethodError 

Aqui está minha classe Mostrando


class Showing < ActiveRecord::Base
belongs_to :movie


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

Como posso mudar minha classe exibição para obter o move_list do showing_list sem fazê-lo manualmente?

Obrigado

Foi útil?

Solução

@showing_list é uma matriz.

@showing_list.collect(&:movie).uniq

Outras dicas

Use o ansioso capacidade de carga:

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

O conjunto de dados resultante será agora incluem o filme junto com o show vezes acessíveis via:

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

Claro, isso poses agrupamento problemas se você estiver olhando para criar uma lista mais legível. mas você pode fazer algumas coisas muito extravagantes com o método group_by, como:

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

Espero que ajude.

-Chris

Tente:

named_scope :find_sorted_showings, lambda { |order|
  { :order => order }
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top