Rails помогают переписывать рельсы рандомизировать - PullRequest
0 голосов
/ 18 марта 2011

Как мне переписать это?

@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?

Ответы [ 2 ]

1 голос
/ 18 марта 2011

Использование SQL ORDER BY rand() безумно медленно. Попробуйте вместо этого: Konkurrancer.first :offset => ( Konkurrancer.count * rand ).to_i

1 голос
/ 18 марта 2011

Это должно работать

@items= Konkurrancer.where("kategori_id = '#{@kategor}'")
@random_item = @items[rand(@items.size)] 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...