私は次の協会を持っています:
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
会場ごとの商品の販売数を見たくないので、基本的には特定の商品のrecipe.quantity
を掛ける必要があります。sale_line.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
その方法ではアクセスできません。
それを達成する方法について何か考えはありますか?