在第三个关联字段中使用排序方法

using order method in third association field

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

只需将 table 名称添加到订单原因中:

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

应该可以解决问题。

原因是您与 order_details 的人没有直接联系(通过订单)。它被称为嵌套连接,您可以参考 API here

传递给连接方法的名称不是 table 名称,它们是关联名称。