Я пытаюсь повысить эффективность своего приложения, выполняя работу в базе данных, а не на уровне приложения, и мне интересно, могу ли я перенести этот расчет в базу данных.
Модели:
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
Я хочу рассчитать цену предложения.В настоящее время у меня есть метод цен в классе «Предложение»:
def price
self.lines.inject(0) do |total, line|
total + line.quantity * line.item.price
end
end
Я подозреваю, что вместо этого можно сделать расчет Offer.sum
, который бы получал ответ непосредственно из БД, а не просматривал записино в разделе Вычисления в справочнике запросов ActiveRecord недостаточно подробностей, чтобы выручить меня.Кто-нибудь?
Спасибо!