Pergunta

Eu tenho um relativamente simples relacionamento e uso acts_as_tree um-para-muitos para obtê-lo organizado na vista. Parece um bocado como este:

Root

  |_Product 1
  |_Product 2
  |_Category 1.1

        |_Product 3
        |_Product 4
        |_Category 1.1.1

               |_Product 5

A forma como eu configurá-lo é que os produtos da lista I em ação 'show' da categoria. No entanto eu não consigo também descobrir como mostrar: O produto 1-5 no 'show' para a categoria 1, Product 3-5 na categoria 1.1 e assim por diante ...

Alguém tem uma dica, de onde eu posso pegá-lo?

Obrigado! Val

Foi útil?

Solução

Você também pode ter um olhar para a recente ascendência gem projetado para alto desempenho quando a pessoa precisa obter todos os descendentes em uma consulta SQL.

Outras dicas

Se você estiver usando awesome_nested_set (recomendado, eu), então você pode fazer isso:

Se o produto belongs_to Categoria:

class Category < ActiveRecord::Base
    def products_in_tree
        Product.all(:joins => :category, :conditions => ['categories.lft >= ? and categories.rgt <= ?', left, right])
    end
end

Se Categoria has_and_belongs_to_many produto (ou has_many: through), altere o: junte-se a:. Categorias

Você precisa usar um conjunto aninhado se você quiser resolver isso com um desempenho aceitável (isto é, evitar uma infinidade de pesquisas de banco de dados separados para compilar a lista).

Rails costumava ter atos _ como _ nested_set built-in, e o explicação de como ele funciona ainda é muito bom e muito válido. Hoje você deve usar isso como um plug-in .

No entanto, o padrão Rails plugin não é muito bom, é por isso que vários outros plugins foi feita. Vou recomendar que você use impressionante Nested Set, que eu tenha me usado com resultados satisfatórios.

conjuntos aninhados pode ser um pouco difícil de entender, mas espero que a primeira ligação e os outros do leia-me vai explicar isso para você.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top