小编Cha*_*les的帖子

Rails 3查询关联计数的条件

在带有mysql的Rails 3中,假设我有两个模型,Customers和Purchases,显然是购买belongs_to客户.我想找到2个或更多订单的所有客户.我可以简单地说:

Customer.includes(:purchases).all.select{|c| c.purchases.count > 2}
Run Code Online (Sandbox Code Playgroud)

但实际上,上面的行会查询Customer.all和Purchase.all的大小,然后在ruby中执行"select"类型处理.在一个大型数据库中,我更愿意避免在ruby中进行所有这些"选择"计算,并让mysql进行处理,只给我合格客户列表.这要快得多(因为mysql更多地调整了这一点)并且显着减少了数据库的带宽.

不幸的是,我无法用rails中的构建块(where,having,group等)来实现代码,以实现这一点,这些内容符合(psudo-code):

Customer.joins(:purchases).where("count(purchases) > 2").all
Run Code Online (Sandbox Code Playgroud)

我将满足于直接的MySql解决方案,尽管我更喜欢在优雅的rails框架中解决这个问题.

ruby mysql ruby-on-rails-3

31
推荐指数
2
解决办法
1万
查看次数

标签 统计

mysql ×1

ruby ×1

ruby-on-rails-3 ×1