Нет ничего плохого в использовании SQL в вашем приложении, если вы можете убедиться, что оно работает правильно и не подвергает вас атакам с помощью инъекций. Поскольку это утверждение выполняется как есть, с этим у вас все в порядке.
ActiveRecord::Base.connection
предоставляет метод для выполнения произвольных запросов и получения результатов в различных форматах. select_all
или select_rows
может быть тем, что вы ищете.
Генератор запросов AREL не всегда такой умный, как хотелось бы, поэтому, если есть сомнения, используйте простейшую форму выражения. В вашем случае это, кажется, тот кусок SQL.
Чтобы переписать его с помощью AREL, вам нужно использовать метод join
, чтобы связать его обратно с самим собой.