繁体   English   中英

Rails 4加入相关表 - 当某些记录没有关联时进行排序

[英]Rails 4 joining associated tables - sorting when some records don't have an association

我使用以下内容:

Vehicle.joins(:supplier, :owner, :model).order("#{sort_column} #{sort_direction}")

这允许我按照4个相关模型中的任何一个中的属性对结果进行排序。 问题是当特定车辆没有关联例如供应商时,则不返回结果。 只有当所有车辆都有3个协会时,才会显示任何结果。

有没有其他方法可以实现我需要的功能?

默认情况下,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名称。 如果它们不同,请更改它

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM