tables rails query multiple left joins active ruby-on-rails ruby-on-rails-3 activerecord scope arel

ruby-on-rails - query - scope rails



Ruby/Rails-¿Puedo usar el alcance de una tabla unida(o método de clase) como parte de mi cláusula WHERE? (1)

Debes usar el método de combinación

class Category < ActiveRecord::Base has_many :products scope :with_purchaseable_products, joins(:products).merge(Product.purchaseable).group(:id).having(''count(products.id) > 0'') end

Lea más en http://asciicasts.com/episodes/215-advanced-queries-in-rails-3

Quiero agarrar todas las categorías que contienen products que se pueden comprar.

class Product < ActiveRecord::Base belongs_to :category scope :purchaseable, where(:available => true) end class Category < ActiveRecord::Base has_many :products scope :with_purchaseable_products, ????? end

Entonces, estoy tratando de definir :with_purchaseable_products . Esto funciona:

scope :with_purchaseable_products, joins(:products).where("products.available is true").group(:id).having(''count(products.id) > 0'')

Pero eso no es muy SECO. ¿Hay alguna manera de aplicar mi :purchaseable alcance :with_purchaseable_products a los products en mi :with_purchaseable_products alcance con products de :with_purchaseable_products ?

Gracias.