2010-09-08 66 views
0

有誰知道我如何在RoR中顯示4個隨機用戶的列表。RoR隨機四位用戶

我知道有rand()方法,但我必須以某種方式將它應用於數組。

回答

2

如果表中沒有包含太多的條目下面將返回4個隨機選擇的用戶:

User.find(:all, :order => 'RANDOM()', :limit => 4) 

然而,這並不比例的,因爲它會隨機整個表。對於有很多列的表,這可能是非常密集的IO。

另一種方法是隻對id進行隨機化,然後只選擇那些行。沿着線的東西:

# 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(',')})") 

如果用這個去了,我想將其封裝爲User一個類的方法。

+0

這就是我得到的:SQLite3 :: SQLException:沒有這樣的函數:rand: – Brian 2010-09-08 01:57:27

+0

對於SQLite,函數是'RANDOM()'。 – rjk 2010-09-08 02:10:40