【发布时间】:2014-02-25 02:00:51
【问题描述】:
我正在尝试学习与 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”。我的学习协会的里程碑:) 对此感到高兴。
但是现在我希望能够返回与 product_id 关联的 product_group_id 等于 30 的 net_amount 的总和。这样我就可以得到数据库中满足此条件的所有行的总 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 中执行此操作,我想我会在某处发生内部连接。
任何想法都将不胜感激。
【问题讨论】:
-
stackoverflow.com/questions/12702506/… 这个问题对以后遇到这个问题的人有很大帮助。
标签: ruby ruby-on-rails-4 associations has-many belongs-to