0

特定の基準を満たすランダムなレコードを取得したいモデルがあります。例: column_name = true の表 Thing からランダムなレコードを取得してください。

モデルからランダムなレコードを取得するには、次のようにします。

Thing.offset(rand(Thing.count)).first

それをクエリと組み合わせたい:

Thing.where("column_name = ?", true).all

これは機能しません:

counter = Thing.where("column_name = ?", true).count
Thing.where("column_name = ?", true).offset(rand(counter)).first

このクエリの書き方に関するアイデアは大歓迎です。

4

1 に答える 1

0

これはあなたのためにそれをするはずです:

  counter = Thing.where("column_name = ?", true).count
  Thing.where("column_name = ?", true).limit("#{rand(counter)}, 1").first

テーブルのどこかから読み取られた1つの行を返します。

于 2012-11-08T13:22:40.547 に答える