我有2个模型如下:
Client
has_many :cases
Case
belongs_to :client
假设我有 2 个客户 c1 和 c2。
c1 有 1 例,c2 有 2 例。
c1 = Client.create(name: 'C1')
c2 = Client.create(name: 'C2')
case1 = Case.create(type: 'Normal', client: c1)
case2 = Case.create(type: 'Normal', client: c2)
case3 = Case.create(type: 'High', client: c2)
我想获取所有客户端并按每个客户端 asc/desc 的最后一个案例类型进行排序。所以如果我按 asc 排序,我应该得到 'c1' 然后是 c2 的结果。如果我按 desc 排序,我应该得到 'c2' 然后 'c1' 的结果。以下是我迄今为止尝试过的。
Client.includes(:cases).order('cases.type asc') # => 'C2,C1'
Client.includes(:cases).order('cases.type desc') # => 'C2,C1'
由于 c2 也有一个“普通”类型的案例,我认为查询似乎是先找到客户端,然后它会执行类似于 client.cases 的操作。然后,我认为它只在每个客户端下订购案例,而不是跨客户端订购案例。
我觉得我的解释有点混乱。如果你有,请给我一个问题。谢谢。