在第三关联字段中使用订购方法

问题描述

class Order
  has_many :order_details
end

class OrderDetail
  belongs_to :order
  belongs_to :person
end

class Person
  has_one :profile
  delegate :first_name,last_name
end

class Profile

end

我目前正在视图中迭代订单详细信息,并尝试按姓氏排序或排序 我该如何实现?

我在视图中使用它

@order_details.joins(:person).order('last_name ASC').each do |detail|

我应该使用排序吗?或订单?

这是我的错误

column "last_name" does not exist

解决方法

只需将表名添加到订单原因中即可:

@order_details.joins(:person).order('people.last_name ASC')
,
@order_details.joins(order: :person).order('last_name ASC')

应该可以解决问题。

原因是您没有通过order_details与人直接关联(通过订单)。它称为嵌套连接,您可以引用API here

传递给join方法的名称不是表名称,而是关联名称。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...