はじめに
ランダムに10個取得したいときの実現方法が色々とあったため、備忘としてまとめました。
おそらく、いくらでもあります
(2019/12/18)
コメントでsampleArray#sampleを教えていただいたので、追記しました。
ランダム取得
Animalモデルから10個取り出す
RANDOM()を使用
@random = Animal.order("RANDOM()").limit(10)
RAND()を使用
MySQLはRAND()じゃないと動かないそうです。
@random = Animal.order("RAND()").limit(10)
sampleを使用
@random = Animal.all.sample(10)
配列をshuffle
array = Animal.all
@random = array.shuffle[0..9]
pluckを使う
idカラムから全て取ってきてシャッフルしてくれます。
random_num = Animal.pluck(:id).shuffle[0..9]
@random = Animal.find(random_num)