当相关 table 有别名时如何按关系排序
How to order by relationship when the related table has an alias
我们有一个名为 Client
的 table 并且客户端以两种方式属于一个用户,一个 client
可以有一个 updater
并且有一个 creator
.也属于一个company
.
belongs_to :creator, class_name: 'User'
belongs_to :updater, class_name: 'User'
我正在尝试为他们所属的当前父对象 company
获取所有客户端,然后按他们的 creator
名称的字母顺序对它们进行排序
这是我目前尝试过的方法
current_company.clients.includes(:creator).order("creator.name #{sort_dir}")
如果我将 :user
放入 include 中,它会抛出用户不在 table 上的错误。
Association named 'user' was not found on Client;
这是我在网上找到的最接近的结果。
查看查询的最简单方法是调用 .to_sql
.
您将看到,当执行 join
时,它使用 table 名称 users
,而不是关系名称 creator
。
这应该有效:
current_company.clients.includes(:creator).order("users.name #{sort_dir}")
我们有一个名为 Client
的 table 并且客户端以两种方式属于一个用户,一个 client
可以有一个 updater
并且有一个 creator
.也属于一个company
.
belongs_to :creator, class_name: 'User'
belongs_to :updater, class_name: 'User'
我正在尝试为他们所属的当前父对象 company
获取所有客户端,然后按他们的 creator
这是我目前尝试过的方法
current_company.clients.includes(:creator).order("creator.name #{sort_dir}")
如果我将 :user
放入 include 中,它会抛出用户不在 table 上的错误。
Association named 'user' was not found on Client;
这是我在网上找到的最接近的结果。
查看查询的最简单方法是调用 .to_sql
.
您将看到,当执行 join
时,它使用 table 名称 users
,而不是关系名称 creator
。
这应该有效:
current_company.clients.includes(:creator).order("users.name #{sort_dir}")