2012-02-09 49 views
0
minions = Minion.all 

有没有办法在变量中直接查找minions而不是通过数据库搜索?找到一个哈希碎片中的记录= Minion.all

我试图清理它,这将是向前迈进的一种方式,我认为:

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)) 

回答

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 
+0

谢谢 - 这是更清洁 – amaseuk 2012-02-09 15:58:23