2011-03-18 69 views
0

我该如何重写?Rails帮助重写轨道随机

@bannerkat = Konkurrancer.where("kategori_id = '#{@kategor}'").order('rand()').first 

要像这样@banner = Konkurrancer.all[rand(Konkurrancer.all.size)]

我已经试过这样:

@bannerkat = Konkurrancer.all[rand(Konkurrancer.where("kategori_id = '#{@kategor}'"))] 

,我如何防止SQL注入?

回答

1

这应该工作

 
@items= Konkurrancer.where("kategori_id = '#{@kategor}'") 
@random_item = @items[rand(@items.size)] 
+0

私人方法调用 - 方法丢失 – 2011-03-18 19:20:28

+0

对不起,我的坏处,这取决于轨道3.更新回答 – 2011-03-18 19:22:30

+0

这种方式从数据库中获取整个收集! – scragz 2011-03-18 20:23:14

1

使用SQL ORDER BY rand()是疯狂缓慢。试试这个:Konkurrancer.first :offset => (Konkurrancer.count * rand).to_i