2011-11-30 33 views
1

我有一個模型:獲取在軌從現場的has_many隨機記錄3

class HotelTheme < ActiveRecord::Base 
    has_many :hotels 
end 

我想用一個隨機獲得6家酒店。

我想:

@hotelTheme.hotels.rand(6) 

但是失敗的話,任何的想法?

謝謝

+0

[從一組結果獲得的隨機記錄](http://stackoverflow.com/questions/6004820/getting-a-random-record-from-a-set-of-results) – l0b0

回答

5

您可以使用下面的語法:

@hotelTheme.hotels.order("RANDOM()").limit(6) #for MySQL RAND() 

RANDOM()是SQL內置函數,它是對大表慢的作品。另外請看randumb gem

+1

不會告發的可能重複這是否會導致大表緩慢,而不是'RANDOM()'?不確定你的回答是否清楚。 – Russell

0

如果你不介意返回所有hotel S的開銷,當你只想要六個,你可以做

@hotelTheme.hotels.shuffle[0..5] 

但是,如果你hotel_themehotel小號加載這可能是一個不好的主意。