我的模型中有这个方法,可以让我的视图显示与车辆相关的所有设备。我是否应该使用 find_each 来检查批次记录,如果是,我将如何分解此方法以使用它?
def equip(vehicle)
equip = Vehicle.find_by_id(vehicle).equipments.
where("vehicle_id = ?", vehicle).all
end
我的模型中有这个方法,可以让我的视图显示与车辆相关的所有设备。我是否应该使用 find_each 来检查批次记录,如果是,我将如何分解此方法以使用它?
def equip(vehicle)
equip = Vehicle.find_by_id(vehicle).equipments.
where("vehicle_id = ?", vehicle).all
end
最后不要使用 .all ,它会在调用时触发查询,并且性能会很痛苦。
此外,您应该使用以下语法(Rails 3):
def equip(vehicle)
equip = Equipment.where(vehicle_id: vehicle.try(:id) || vehicle)
end
使用它,您只使用设备模型,它将只使用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