问题描述
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方法的名称不是表名称,而是关联名称。