Est-ce que quelqu'un sait comment je pourrais afficher une liste de 4 utilisateurs aléatoires dans RoR.RoR aléatoire quatre utilisateurs
Je sais qu'il existe la méthode rand(), mais je devrais l'appliquer à un tableau en quelque sorte.
Est-ce que quelqu'un sait comment je pourrais afficher une liste de 4 utilisateurs aléatoires dans RoR.RoR aléatoire quatre utilisateurs
Je sais qu'il existe la méthode rand(), mais je devrais l'appliquer à un tableau en quelque sorte.
Si la table ne contient pas trop d'entrées suivantes retournera quatre utilisateurs choisis au hasard:
User.find(:all, :order => 'RANDOM()', :limit => 4)
Toutefois, cela n'échelle puisqu'il randomizes la table entière . Pour les tables avec beaucoup de colonnes cela peut être très important.
Une autre méthode consiste à randomiser uniquement le id
puis de sélectionner uniquement ces lignes. Quelque chose le long des lignes de:
# Return an array of ids randomly drawn from User
ids = ActiveRecord::Base.connection.select_values(
User.send(:construct_finder_sql, { :select => 'id',
:order => 'RANDOM()',
:limit => 4
}))
# Return the users drawn from above
users = User.find(:all, :conditions => "id IN (#{ids.join(',')})")
Si vous allez avec cela, j'intégrerait comme une méthode de classe de User
.
Voici ce que j'ai obtenu: SQLite3 :: SQLException: pas de telle fonction: rand: – Brian
Pour SQLite, la fonction est 'RANDOM()'. – rjk