アプリ層ではなくデータベースで作業を行うことでアプリの効率を上げようとしていますが、この計算をデータベースに移動できるかどうか疑問に思っています。
モデル:
class Offer < ActiveRecord::Base
has_many :lines
has_many :items, :through => :lines
end
class Line < ActiveRecord::Base
belongs_to :offer
belongs_to :item
# also has a 'quantity' attribute (integer)
end
class Item < ActiveRecord::Base
has_many :lines
has_many :offers, :through => :lines
# also has a 'price' attribute (decimal)
end
私がやりたいことは、オファーの価格を計算することです。現在、Offer クラスに price メソッドがあります。
def price
self.lines.inject(0) do |total, line|
total + line.quantity * line.item.price
end
end
Offer.sum
レコードをループするのではなく、DB から直接回答を取得する代わりに計算を行うことができるのではないかと思いますが、ActiveRecord クエリ ガイドの計算セクションには、私を助けるのに十分な詳細がありません。誰か?
ありがとう!