Calculations across objects are ripe for using a map and an inject but frequently, with ActiveRecord, the solution is more elegant and faster if we can have SQL do the work instead.

Read more at the source