我有以下的关联:复杂的查询...如何加入许多类在轨道?
class Venue < ActiveRecord::Base
has_many :sales
end
class Sale < ActiveRecord::Base
has_many :sale_lines
has_many :beverages, through: :sale_lines
end
class SaleLine < ActiveRecord::Base
belongs_to :sale
belongs_to :beverage
end
class Beverage < ActiveRecord::Base
has_many :sale_lines
has_many :sales, through: :sale_lines
has_many :recipes
has_many :products, through: :recipes
end
class Recipe < ActiveRecord::Base
belongs_to :beverage
belongs_to :product
end
class Product < ActiveRecord::Base
has_many :recipes
has_many :beverages, through: :recipes
end
我wan't看到各场馆销售的产品数量,所以基本上我也由一个特定产品的sale_line.quantity
乘以recipe.quantity
。
我想致电@venue.calc_sales(product)
获得销售数量product
。
类Venue
我试图通过计算这里面:
class Venue < ActiveRecord::Base
has_many :sales
def calc_sales(product)
sales.joins(:sale_lines, :beverages, :recipes).where('recipes.product_id = ?', product.id).sum('sale_lines.quantity * recipe.quantity')
end
end
但是,我无法访问recipes
以这种方式。
关于如何实现它的任何想法?
尝试使用'sales.joins(:sales => {:beverages =>:recipes})' – MrYoshiji
@MrYoshiji'sales.joins(:sale_lines => {:beverage =>:recipes})'诀窍。我并不是很懂复数的规则,但它是以这种方式工作的。只是把你的评论作为答案,我会接受它;)谢谢 – gabrielhilal