2011-03-18 96 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