2011-11-30 147 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小号加载这可能是一个不好的主意。