minions = Minion.all
有没有办法在变量中直接找到minions而不是搜索数据库?
我正在努力清理这个问题,这是我认为的一种前进方式:
subtotal = 0.0
units = Unit.all
self.quote_items.order("area_id").each do |item|
subtotal += Unit.find(item.unit_id).highest_price(package)*item.quantity if item.unit
end
sprintf("%.2f", Quote.add_margin(subtotal))
答案 0 :(得分:2)
在您的示例中,您可以使用find
数组中的units
方法。
subtotal = 0.0
units = Unit.all
self.quote_items.order("area_id").each do |item|
if unit = units.find{|u| u.id == item.unit_id
subtotal += unit.highest_price(package)*item.quantity
end
end
sprintf("%.2f", Quote.add_margin(subtotal))
但在这种情况下,您可以使用:include
。这将为每个项目加载item.unit
。
quote_items.order("area_id").include(:unit).each do |item|
if item.unit
subtotal += item.unit.highest_price(package) * item.quantity
end
end