Did you know ActiveRecord provides class methods for performing calculations on models? You can even use these methods through associations.
 
你知道ActiveRecord提供了许多类方法,用来实现对model属性的计算吗?你甚至可以通过关联来适用这些方法。
 
打开console
>>Task.find(:first).priority
=>4
priority是task类的对象的一个属性。
可以计算这个类的所有对象这个属性的和:
>>Task.sum(:priority)
=>15
还可以加上conditions
>>Task.sum(:priority, :conditions=>"complete=0")
=>13
>>Task.maximum(:priority)
=>4
=>Task.minimum(:priority)
=>1
=>Task.average(:priority)
=>2.5
下面来看个通过关联来使用计算方法的例子:
 
>>p=Project.find(:first)
=>#<Project :0x32dce38 @attributes={"name"=>"Programming", "id"=>"1"}>
=>p.tasks.sum(:priority)
=>9
>>p.tasks.sum(:priority, :condition=>"complete=0")
=>7
下面是这些计算方法