1. ホーム
  2. ruby-on-rails

[解決済み] ActiveRecordのランダムレコード

2022-04-23 08:25:16

質問

ActiveRecordでテーブルからランダムにレコードを取得する必要があります。以下の例に従っています。 ジャミーズ・バック(2006年 .

しかし、Google検索で別の方法にも出会いました(新規ユーザー制限のため、リンクで属性がつけられません)。

 rand_id = rand(Model.count)
 rand_record = Model.first(:conditions => ["id >= ?", rand_id])

また、どのような方法がより効率的かご存知の方がいらっしゃいましたら教えてください。

解決方法は?

少なくとも2つのクエリなしでこれを行う理想的な方法は見つかっていません。

以下では、ランダムに生成された数値(現在のレコード数まで)を オフセット .

offset = rand(Model.count)

# Rails 4
rand_record = Model.offset(offset).first

# Rails 3
rand_record = Model.first(:offset => offset)

正直なところ、私は ORDER BY RAND() か RANDOM() を使っているだけです(データベースによって異なります)。パフォーマンスの問題がなければ、問題ないです。