教えて頂きありがとうございます！`sum`はすごく便利そうなメソッドですね！
```
[23] pry(Order)> target = [ {p: 1, q: 2},{p: 3, q: 4 } ]
=> [{:p=>1, :q=>2}, {:p=>3, :q=>4}]
[24] pry(Order)> target.sum{|t| t[:p] * t[:q] }
=> 14
```
ええと、今回mtsmfmさんから教えて頂いたActiveSupportの`sum`とは別に
ActiveRecordの`sum`があって、`order.order_details`はActiveRecordだから
後者の`sum`が呼ばれてしまうということですね。

そして、そういった意図しない動作を見つけるためにもテストを書かないといけないということですね。
教えて頂きありがとうございます！

```
#ActiveRecordのsumを意図して使う

[55] pry(Order)> order.order_details
=> [#<OrderDetail id: 18, order_id: 11, item_id: 5, quantity: 18, created_at: "2014-06-05 02:05:11", updated_at: "2014-06-05 02:05:11", then_price: 756>,
 #<OrderDetail id: 19, order_id: 11, item_id: 1, quantity: 2, created_at: "2014-06-05 02:05:11", updated_at: "2014-06-05 02:05:11", then_price: 756>]
[56] pry(Order)> order.order_details.sum(:quantity)
  CACHE (0.0ms)  SELECT SUM("order_details"."quantity") AS sum_id FROM "order_details"  WHERE "order_details"."order_id" = $1  [["order_id", 11]]
=> 20
```

```
#ActiveSupportのsumを意図していた場合

[57] pry(Order)> order.order_details.sum { |detail| detail.quantity * detail.then_price  }
ArgumentError: wrong number of arguments (1 for 2..3)
from /Users/esm/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/activerecord-4.1.0/lib/active_record/relation/calculations.rb:101:in `calculate'
```