For grabbing a random row, `ORDER BY RAND()` works on tiny tables but scales poorly because it sorts the whole result. A practical alternative is to pick a strategy based on DB and table size. I use a small gem, RandomRails, that integrates with ActiveRecord and does exactly that: on PostgreSQL it uses `TABLESAMPLE BERNOULLI` for large tables; on MySQL/SQLite it uses an efficient offset-based approach. Usage stays simple: `Reason.random` or `Reason.random(count: 1)`, and it composes with scopes like `Reason.where(active: true).random`. If you’re curious, the implementation and benchmarks are open source here: https://github.com/the-rubies-way/random-rails