Většina příkladů, které jsem viděl a které to dělají, končí počítáním řádků v tabulce a následným generováním náhodného čísla pro výběr jednoho. Důvodem jsou alternativy jako RAND()
jsou neefektivní v tom, že dostanou každý řádek a přiřadí jim náhodné číslo, nebo jak jsem četl (a myslím, že jsou specifické pro databázi).
Můžete přidat metodu podobnou té, kterou jsem našel zde .
module ActiveRecord
class Base
def self.random
if (c = count) != 0
find(:first, :offset =>rand(c))
end
end
end
end
Díky tomu bude mít každý model, který používáte, metodu nazvanou random
který funguje způsobem, který jsem popsal výše:vygeneruje náhodné číslo v rámci počtu řádků v tabulce a poté načte řádek spojený s tímto náhodným číslem. Takže v podstatě děláte jen jeden aport, což je to, co pravděpodobně preferujete :)
Můžete se také podívat na tento zásuvný modul pro kolejnice .