我正在尝试查询我想查找超过一定数量违规的用户。在我的用户模型中,每个用户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"
答案 0 :(得分:3)
您可以使用group
和having
。
User.includes(:violations).group('violations.user_id').having("COUNT(violations.user_id) >= #{@count}")
当然,如果您无法控制输入,那么您需要在注入字符串之前清理输入。
答案 1 :(得分:0)
尝试类似
的内容@users = User.includes(:violation).where("violations.count >= ?", @count)