Rails:如何查找超过特定计数的对象

时间:2013-05-14 04:06:40

标签: ruby-on-rails ruby-on-rails-3

我正在尝试查询我想查找超过一定数量违规的用户。在我的用户模型中,每个用户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"

2 个答案:

答案 0 :(得分:3)

您可以使用grouphaving

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

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

答案 1 :(得分:0)

尝试类似

的内容
@users = User.includes(:violation).where("violations.count >= ?", @count)