User.select("users.*", "CONCAT(users.first_name, ' ', users.last_name) AS full_name")
.where(full_name: "John Whoosiwhatsit")
Это будет работать на MySQL, Postgres и SQLite (и, вероятно, больше). ActiveRecord отобразит любые псевдонимы столбцов в результирующих строках запроса как атрибуты в модели.
Некоторые базы данных (например, Oracle) не позволяют использовать псевдонимы в предложении WHERE, поэтому вам придется повторить конкатенация:
# Use an Enterprise DB they said. It will be fun they said.
User.select("users.*", "CONCAT(users.first_name, ' ', users.last_name) AS full_name")
.where("CONCAT(users.first_name, ' ', users.last_name) = 'John Whoosiwhatsit'")
Вероятно, это работало практически во всех версиях, поскольку Rails AFAIK всегда позволял вам возвращаться к raw SQL при необходимости.