我有以下的關聯:複雜的查詢...如何加入許多類在軌道?
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