0

我正在尝试进行查询,以查找超过一定数量违规的用户。在我的用户模型中,每个用户has_many violation。在我的索引操作中,我想找到超过 25 次违规的用户。这就是我的用户控制器中的内容:

更新

if params[:viewpage] == "violators"
    @count = "25".to_i
    @users = User.includes(:violation).group('violation.user_id').having("COUNT(*) >= #{@count}").paginate :page => params[:page], :per_page => 20
  elsif......

这给了我一个错误:invalid value for Integer(): "violators"

4

2 回答 2

3

您可以使用grouphaving

User.includes(:violations).group('violations.user_id').having("COUNT(violations.user_id) >= #{@count}")

当然,如果您无法控制输入,那么您将需要在注入字符串之前对输入进行清理。

于 2013-05-14T04:13:50.723 回答
0

尝试类似的东西

@users = User.includes(:violation).where("violations.count >= ?", @count)
于 2013-05-14T04:11:32.803 回答