【发布时间】:2020-11-10 14:35:45
【问题描述】:
我创建了一个与 Response 模型有 has_many 关联的候选模型
在响应模型中,我们还将状态存储为待处理和已完成
我想添加根据数量待定状态对候选人进行排序的范围
例如
Candidates1 -> repsones1 --> {status: "pending"}
-> repsones2 --> {status: "completed"}
*******************************************************
Candidates2 -> repsones1 --> {status: "pending"}
-> repsones2 --> {status: "pending"}
*******************************************************
Candidates3 -> repsones1 --> {status: "completed"}
-> repsones2 --> {status: "completed"}
*******************************************************
Candidates4 -> repsones1 --> {status: "pending"}
-> repsones2 --> {status: "pending"}
所以上面的例子,我想这样订购
Candidates2 #pending status count is 2
Candidates4 #pending status count is 2
Candidates1 #pending status count is 1
Candidates3 #pending status count is 0
我使用 Postgres 作为数据库
我不想在候选模型上添加任何计数属性
我尝试了一些范围
class Candidate < ActiveRecord::Base
has_many :responses
scope :order_by_pending_responses, -> {
joins(:responses)\
.order("responses.status='pending' DESC")
}
end
但得到重复的候选人 如果我在作用域上添加了 uniq 关键字,那么分页就会出错
【问题讨论】:
标签: sql ruby-on-rails ruby psql