Ваше решение достаточно для небольших наборов данных, но оно неэффективно для больших наборов данных, поскольку ваш запрос извлекает все записи Person из базы данных, прежде чем сортирует их в коде приложения.
Лучше разрешить базе данных выполнять тяжелую работу с большими объемами данных, поэтому более быстрый и эффективный подход состоял бы в том, чтобы база данных сначала отфильтровывала отдельные записи:
Person.select('distinct name').collect { |p| p.name }