obtenga todos los productos de categoría y categorías secundarias (rails, awesome_nested_set)

teniendo una aplicación de comercio electrónico en desarrollo, estoy tratando de entender el siguiente problema: tengo mis categorías realizadas a través del plugin awesome_nested_set. Si enumero mis artículos seleccionando una categoría, todo funciona bien, pero para algunos enlaces quiero mostrar todos los productos de una categoría y los productos de sus categorías secundarias.

aquí está el código del controlador que funciona bien con solo una categoría:

   # products_controller.rb
   def index
    if params[:category]
      @category = Category.find(params[:category])
      #@products = @category.product_list
      @products = @category.products
    else
      @category = false
      @products = Product.scoped
    end
    @products = @products.where("title like ?", "%" + params[:title] + "%") if params[:title]
    @products = @products.order("created_at).page(params[:page]).per( params[:per_page] ? params[:per_page] : 25)
    @categories = Category.all
  end

La línea que comenté es un método auxiliar que escribí yo mismo en el modelo de categoría que devuelve todos los productos de la categoría y sus categorías secundarias en una matriz.

Se define como sigue:

# app/models/category.rb
def product_list
  self_and_ancestors.to_a.collect! { |x| x.products }
end

Ahora cuando descomento esta línea e intento seleccionar una categoría, el código del controlador de mis productos se rompe con errores como

undefined method `order' for #<Array:0x1887c2c>

undefined method `page' for #<Array:0x1887c2c>

porque estoy usando el orden y la paginación y ya no puede ordenar el arary.

¿Alguna idea de cómo obtener todos los productos en un elemento de Relación ActiveRecord en mi controlador? Gracia

ACTUALIZA

so, cuando uso lo siguiente:

class Category < ActiveRecord::Base
    acts_as_nested_set

    attr_accessible :name, :description, :lft, :rgt, :parent_id   

    has_many :categorizations
    has_many :products, :through => :categorizations

    attr_accessor :product_list

    def branch_ids
      self_and_descendants.map(&:id).uniq 
    end

    def all_products
       Product.find(:all, :conditions => { :category_id => branch_ids } )
    end


end

y pregunte al controlador por@category.all_products Obtuve el siguiente error

Mysql::Error: Unknown column 'products.category_id' in 'where clause': SELECT `products`.* FROM `products` WHERE `products`.`category_id` IN (6, 8, 9)

¿Cómo obtendría todos los productos con esta constelación?

UPDATE 2

Ok, entonces voy a comenzar una recompensa.

Si lo intento:

def all_products Categorization.find (: all,: condition => {: category_id => branch_ids}) end

Yo vuelvoundefined methodorder 'para # `Necesito saber cómo puedo obtener todos los productos de una relación many_to_many como una relación ActiveRecord.

UPDATE 3

Puse el código relevante en una esenciahttps: //gist.github.com/121123