Ruby on rails 在第三关联域中使用顺序法
我目前正在迭代视图中的订单详细信息,并尝试按姓氏排序或排序 我怎样才能做到这一点 在我看来,我正在使用这个Ruby on rails 在第三关联域中使用顺序法,ruby-on-rails,ruby,ruby-on-rails-4,ruby-on-rails-5,Ruby On Rails,Ruby,Ruby On Rails 4,Ruby On Rails 5,我目前正在迭代视图中的订单详细信息,并尝试按姓氏排序或排序 我怎样才能做到这一点 在我看来,我正在使用这个 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
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
我应该使用sort吗?还是点菜
这是我的错误
@order_details.joins(:person).order('last_name ASC').each do |detail|
只需将表名添加到订单中即可,原因如下:
column "last_name" does not exist
只需将表名添加到订单中即可,原因如下:
column "last_name" does not exist
我们应该做到这一点
原因是您与订单详情中的人员没有直接关联(通过订单)。它被称为嵌套联接,您可以引用API
传递给联接方法的名称不是表名称,而是关联名称
我们应该做到这一点
原因是您与订单详情中的人员没有直接关联(通过订单)。它被称为嵌套联接,您可以引用API
传递给联接方法的名称不是表名,它们是关联名称。我使用了
people
,因为假设Person
模型的表遵循Rails约定,因此命名为people
Person
是关联的名称,它是单数的,因为一条记录在同一时间只能属于一个人。存储Person
模型的所有记录的表被命名为people
,因为该表中存储了许多people
。这些是Rails的命名约定。这很奇怪。您的数据库模式是什么样子的?您是否对该表进行了不同的命名,例如,persons
?@order\u details.joins(order::person)。order('last\u name ASC')应该起作用。原因是您与订单详情中的人员没有直接关联(通过订单)。它被称为嵌套联接,您可以引用需要将表名传递给定义了last\u name
列的order
方法的API。该表在您的数据库中是如何命名的?我使用了people
,因为假定Person
模型的表遵循Rails约定,因此命名为people
,Person
是关联的名称,它是单数,因为一条记录在同一时间只能属于一个人。存储Person
模型的所有记录的表被命名为people
,因为该表中存储了许多people
。这些是Rails的命名约定。这很奇怪。您的数据库模式是什么样子的?您是否对该表进行了不同的命名,例如,persons
?@order\u details.joins(order::person)。order('last\u name ASC')应该起作用。原因是您与订单详情中的人员没有直接关联(通过订单)。它被称为嵌套联接,您可以引用需要将表名传递给定义了last\u name
列的order
方法的API。该表在数据库中是如何命名的?
@order_details.joins(order: :person).order('last_name ASC')