sql >> Database teknologi >  >> RDS >> Mysql

Rails vælger tilfældig rekord

De fleste af de eksempler, jeg har set, der gør dette, ender med at tælle rækkerne i tabellen og derefter generere et tilfældigt tal for at vælge en. Dette skyldes, at alternativer såsom RAND() er ineffektive, idet de faktisk får hver række og tildeler dem et tilfældigt tal, eller det har jeg læst (og er databasespecifik, tror jeg).

Du kan tilføje en metode som den, jeg fandt her .

module ActiveRecord
  class Base
    def self.random
      if (c = count) != 0
        find(:first, :offset =>rand(c))
      end
    end
  end
end

Dette vil gøre det så enhver model, du bruger, har en metode kaldet random som fungerer på den måde, jeg beskrev ovenfor:genererer et tilfældigt tal inden for antallet af rækker i tabellen, og henter derefter rækken, der er knyttet til det tilfældige tal. Så dybest set laver du kun én hentning, hvilket er hvad du sandsynligvis foretrækker :)

Du kan også tage et kig på dette rails-plugin .



  1. Mysql - slet fra flere tabeller med én forespørgsel

  2. Flet rækker i samme id til matrix

  3. Skrive hebraisk til mySql ved hjælp af JAVA

  4. Tips til lagring af PostgreSQL-sikkerhedskopier på Google Cloud (GCP)