我的模型中有这个方法,允许我的视图显示与车辆相关的所有设备。我是否应该使用find_each来检查批量记录,如果是,我将如何破坏此方法以使用它?
def equip(vehicle)
equip = Vehicle.find_by_id(vehicle).equipments.
where("vehicle_id = ?", vehicle).all
end
答案 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