在活动记录中使用一个查询选择两个计算

时间:2013-12-26 21:15:22

标签: activerecord

在SQL中我会做"select count(*), min(price) from products"。在活动记录中使用一个查询执行此操作的最佳方法是什么?

现在我必须做两个查询,这感觉不对。

result_count = Product.where(filter_string).count
result_min = Product.where(filter_string).minimum(:price)

1 个答案:

答案 0 :(得分:0)

您可以使用select方法添加字符串,如下所示:

result_stats = Product.select("count(*) as product_count, min(price) as price_min").where(filter_string)[0]
result_stats["product_count"] # => 123
result_stats["price_min"] # => 12.35

这里的限制是,这将初始化Product个对象,只有那些可访问的字段(在这种情况下只有1个对象,因为没有group by子句)。在这种情况下,这不是一个真正的问题,但是如果在尝试访问关系时出现错误,则值得了解。

http://guides.rubyonrails.org/active_record_querying.html#selecting-specific-fields