我正在尝试使用Rails 4学习数据库关联。
在我的应用程序中,我有两个型号,销售和产品。
class Sale < ActiveRecord::Base
belongs_to :customer
belongs_to :product
end
class Product < ActiveRecord::Base
self.primary_key = :product_id
has_many :sales
end
我已经与has_many和belongs_to建立了关联,并且在Rails控制台中我可以成功完成:
@s = Sale.find_by_product_id("10RB1236").product.product_group_id
Sale Load (1.5ms) SELECT "sales".* FROM "sales" WHERE "sales"."product_id" = '10RB1236' LIMIT 1
Product Load (0.8ms) SELECT "products".* FROM "products" WHERE "products"."product_id" = $1 ORDER BY "products"."product_id" ASC LIMIT 1 [["product_id", "10RB1236"]]
=> "30"
这成功返回product_group_id为“30”。我的学习协会的里程碑:)对此感到高兴。
但是现在我希望能够返回net_amount的总和,其中product_id的关联product_group_id等于30.这样我就可以得到满足这个条件的数据库中所有行的总net_amount。
我试过了:
@c = Sale.sum(:net_amount, :conditions => {:product_id.product_group_id => "30"})
@c = Sale.sum(:net_amount, :conditions => {:product_id.product.product_group_id => "30"})
试图获得更多想法或解决方法如何做到这一点?如果我在纯SQL中这样做,我想我会在某个地方发生内部联接。
非常感谢任何想法。
答案 0 :(得分:1)
Sale.includes(:product).where("products.product_group_id = ?", "30").sum(:net_amount)