说是否有一个包含字段的表
Products
--------
ID
CategoryID
Name
Price
... etc
Ruby on Rails如何提供一个返回
的表select count(*) from products group by categoryID
这是显示每个类别中有多少产品?结果如何,而不是Products.find(:all)
是一个Product对象数组?
作为更高级的操作,怎么样
select count(*) from products p inner join category c on p.categoryID = c.ID
group by categoryID
和
select average(price) from products p inner join category c on p.categoryID = c.ID
group by categoryID
答案 0 :(得分:7)
您可能想要查看ActiveRecord::Calculations
模块(我相信它会解决您提出的大部分问题):
http://api.rubyonrails.org/classes/ActiveRecord/Calculations.html
一些例子:
<强>计数:强>
Product.group(:category_id).count
<强>平均:强>
Product.joins(:category).group(:category_id).average(:price)
那些应该有希望让你走上正确的道路。但是,请查看链接的文档,因为它非常有用。
答案 1 :(得分:2)
您是在询问幕后发生的事情,也不知道结果会是什么样子。如果是后者,那么学会爱控制台!您可以轻松找到自己:
$ script/console
Loading development environment (Rails 2.3.8)
>> Product.count
=> 229697
>> Product.count(:group => :category_id)
=> #<OrderedHash {27=>5588, 33=>41, 28=>156, 34=>22, 23=>15209, 1=>115357,
29=>109, 24=>68, 2=>14434, 25=>78576, 31=>85, 26=>4, 32=>48}>
正如您所看到的,它为您提供了有序哈希映射category_ids到这些类别的计数。