find_each Active Record查询

时间:2013-04-29 20:07:37

标签: ruby-on-rails activerecord

我的模型中有这个方法,允许我的视图显示与车辆相关的所有设备。我是否应该使用find_each来检查批量记录,如果是,我将如何破坏此方法以使用它?

def equip(vehicle)
  equip = Vehicle.find_by_id(vehicle).equipments.
        where("vehicle_id = ?", vehicle).all
end

1 个答案:

答案 0 :(得分:1)

最后不要使用.all,它会在被调用时触发查询,并且会像表现一样痛苦。

此外,您应该使用此语法(Rails 3):

def equip(vehicle)
  equip = Equipment.where(vehicle_id: vehicle.try(:id) || vehicle)
end

使用它,您只使用Equipment模型,它只使用equipments SQL表(不是2个或更多)。

# This line
vehicle.try(:id) || vehicle
# Allows you to pass both a Vehicle object or a vehicle id to your method

此外,如果您已经有车辆实例,则可以使用:

def equip(vehicle)
  equip = Vehicle.where(id: vehicle).first.equipments
  # or with your syntax:
  equip = Vehicle.find(vehicle).equipments
end