在minions中查找哈希中的记录= Minion.all

时间:2012-02-09 15:30:03

标签: ruby-on-rails-3 hash

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

1 个答案:

答案 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