0

特定の違反回数を超えたユーザーを検索するクエリを実行しようとしています。私の User モデルでは、各 user has_many violation. インデックス アクションで、違反が 25 件を超えるユーザーを見つけたいと考えています。これは、Users コントローラーにあるものです。

アップデート

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

groupとを使用できますhaving

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 に答える