Ruby on rails Rails:如何查找超过某个计数的对象
我正在尝试做一个查询,我想找到超过一定数量违规的用户。在我的用户模型中,每个用户都有许多违规行为。在我的索引操作中,我希望找到违规超过25次的用户。这是我的用户控制器中的内容: 更新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}"
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}')`。没问题!我很高兴能帮上忙。