@violators = User.includes(:violation).select('users.id, violations.id')
.group('users.id, violations.id').having("COUNT(violations.user_id) >= ?", 5)
.order("COUNT(violations.user_id) desc")
每个用户has_many
违规。通过上面的查询,我可以对违规次数最多的用户进行排序,但我只想查看违规次数为 5 次或更多的用户。当我插入 5 时,尽管有超过 5 次违规的用户,但什么都没有显示。当我在其中输入 1 时,所有违规用户都会出现!
更新:
我无法像我之前建议的那样对违规最多的用户进行排序。实际的违规计数可能存在问题。它以某种方式没有捕获它们。虽然当我检查控制台并尝试运行 -user.violation.count 时,它给了我准确的计数。