【发布时间】:2013-08-21 14:55:37
【问题描述】:
我有以下关联:
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。
你知道如何实现它吗?
【问题讨论】:
-
尝试使用
sales.joins(:sales => { :beverages => :recipes }) -
@MrYoshiji
sales.joins(:sale_lines => { :beverage => :recipes })成功了。我不太了解复数的规则,但它是这样工作的。只需将您的评论作为答案,我会接受它;)谢谢
标签: ruby-on-rails ruby ruby-on-rails-3 activerecord ruby-on-rails-4