0

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

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

1 回答 1

1

最后不要使用 .all ,它会在调用时触发查询,并且性能会很痛苦。

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

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

使用它,您只使用设备模型,它将只使用equipmentsSQL 表(不是 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
于 2013-04-29T20:11:14.263 回答