Acts_as_tree - uno-a-Muchos:Mostrar Registros asociados con los niños en la página principal

StackOverflow https://stackoverflow.com/questions/1688830

Pregunta

Tengo un relativamente simple de uno a muchos relación y uso acts_as_tree para obtener organizada en la vista.Poco se parece a esto:

Raíz

  |_Product 1
  |_Product 2
  |_Category 1.1

        |_Product 3
        |_Product 4
        |_Category 1.1.1

               |_Product 5

La manera en que yo lo configure es que me de la lista de productos en el 'show' de acción de la categoría.Sin embargo, me parece que no puede también averiguar cómo mostrar:Producto 1-5 en el 'show' para la Categoría 1, Producto de 3-5 en la Categoría 1.1 y así sucesivamente ...

¿Alguien tiene una sugerencia, desde donde puedo recogerlo?

Gracias!Val

¿Fue útil?

Solución

También puede echar un vistazo a la reciente joya diseñada para un alto rendimiento cuando se necesita obtener todos los descendientes de una consulta SQL.

Otros consejos

Si está utilizando awesome_nested_set (recomendado, yo), entonces usted puede hacer esto:

Si Producto belongs_to Categoría:

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

Si has_and_belongs_to_many Categoría de producto (o has_many: a través), cambian el: unirse a:. Categorías

Usted necesidad de utilizar un conjunto anidado si quieres resolver esto con un rendimiento aceptable (es decir, evitar una multitud de base de datos independiente de las búsquedas para compilar la lista).

Rieles usados para tener actos _ como _ nested_set integrado, y la explicación de cómo funciona todavía es muy buena y muy válidas.Hoy en día usted debe utilizar esto como un plugin.

Sin embargo, el defecto Rails plugin no es muy buena, que es la razón por la que varios otros plugins que ha sido hecho.Voy a recomendar que utilice Impresionante Conjunto Anidado, que yo mismo he usado con resultados satisfactorios.

Anidada puede ser un poco difícil de entender, pero espero que el primer enlace y el otro el readme se lo explicará.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top