我使用以下内容:
Vehicle.joins(:supplier, :owner, :model).order("#{sort_column} #{sort_direction}")
允许我按照4个相关模型中任何一个的属性对结果进行排序。问题是当特定车辆没有关联时,例如供应商,则不返回任何结果。只有当所有车辆都具有所有3个关联时,才会显示任何结果。
是否有其他方法可以实现我需要的功能?
答案 0 :(得分:2)
默认情况下,rails执行内连接。这就是为什么在没有关联时你没有看到记录的原因。
如果您愿意,可以通过明确提及来改变联接类型
Vehicle
.joins("LEFT JOIN suppliers on vehicles.supplier_id = suppliers.id")
.joins("LEFT JOIN owners on vehicles.owner_id = owners.id")
.joins("LEFT JOIN models on vehicles.model_id = models.id")
.order("#{sort_column} #{sort_direction}")
我根据关联名称猜出了你的table_names和foreign_key名称。如果它们不同,请更改