Ruby on Rails Junte relacionamento mesa
-
03-07-2019 - |
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
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