Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails:如何查找超过某个计数的对象_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails Rails:如何查找超过某个计数的对象

Ruby on rails Rails:如何查找超过某个计数的对象,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我正在尝试做一个查询,我想找到超过一定数量违规的用户。在我的用户模型中,每个用户都有许多违规行为。在我的索引操作中,我希望找到违规超过25次的用户。这是我的用户控制器中的内容: 更新 if params[:viewpage] == "violators" @count = "25".to_i @users = User.includes(:violation).group('violation.user_id').having("COUNT(*) >= #{@count}"

我正在尝试做一个查询,我想找到超过一定数量违规的用户。在我的用户模型中,每个用户都有许多违规行为。在我的索引操作中,我希望找到违规超过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......
这给了我一个错误:
Integer()的值无效::“违反者”

请尝试以下操作

@users = User.includes(:violation).where("violations.count >= ?", @count)
试试像这样的东西

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

您可以使用
拥有

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

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

您可以使用
拥有

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

当然,如果您没有对输入的控制权,那么您将希望在注入字符串之前对输入进行清理。

好吧,我们不知道什么是
违反者
,因为您没有在任何地方定义它。因为您的
参数[:page]
包含一个值字符串
违反者
,但是,
paginate
希望该值为整数。
paginate
函数需要一个整数,才能使用
limit
offset
构建查询。表名是
违规
还是
违规
?无论是哪一个,您都需要保持一致。您需要将这些字段添加到
group
语句中。因此它将是
.group('users.id、users.name、invalications.user\u id等…)。通过指定
select
,可以减少字段数用户。选择('users.id,users.name')。组('users.id,users.name')。例如,拥有('COUNT(违规.用户id)>{@COUNT}')`。没问题!我很高兴能提供帮助。我们不知道什么是
违反者
,因为您没有在任何地方定义它。因为您的
参数[:page]
包含一个值字符串
违反者
,但
分页
希望该值为整数。
paginate
函数需要一个整数,才能使用
limit
offset
构建查询。表名是
违规
还是
违规
?无论是哪一个,您都需要保持一致。您需要将这些字段添加到
group
语句中。因此它将是
.group('users.id、users.name、invalications.user\u id等…)。通过指定
select
,可以减少字段数用户。选择('users.id,users.name')。组('users.id,users.name')。例如,拥有('COUNT(违规.用户id)>{@COUNT}')`。没问题!我很高兴能帮上忙。