Let’s say you have an
events table with a model name
Event. If you want to get a random event from the table, you could run
Event.find_by_sql( <<-SQL SELECT * FROM events ORDER BY random() LIMIT 1 SQL ).first
The functional part of this query is the
ORDER BY random() bit. For every row that postgres is sorting, it generates a random number (between 0.0 and 1.0 by default). Then it sorts the rows by their randomly generated number. Read more about the postgres
random() function at the documentation page.