我有一个模型:获取在轨从现场的has_many随机记录3
class HotelTheme < ActiveRecord::Base
has_many :hotels
end
我想用一个随机获得6家酒店。
我想:
@hotelTheme.hotels.rand(6)
但是失败的话,任何的想法?
谢谢
我有一个模型:获取在轨从现场的has_many随机记录3
class HotelTheme < ActiveRecord::Base
has_many :hotels
end
我想用一个随机获得6家酒店。
我想:
@hotelTheme.hotels.rand(6)
但是失败的话,任何的想法?
谢谢
您可以使用下面的语法:
@hotelTheme.hotels.order("RANDOM()").limit(6) #for MySQL RAND()
RANDOM()
是SQL内置函数,它是对大表慢的作品。另外请看randumb gem。
不会告发的可能重复这是否会导致大表缓慢,而不是'RANDOM()'?不确定你的回答是否清楚。 – Russell
如果你不介意返回所有hotel
S的开销,当你只想要六个,你可以做
@hotelTheme.hotels.shuffle[0..5]
但是,如果你hotel_theme
有hotel
小号加载这可能是一个不好的主意。
[从一组结果获得的随机记录](http://stackoverflow.com/questions/6004820/getting-a-random-record-from-a-set-of-results) – l0b0