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)
=>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
下面是這些計算方法