Обычно, в RoR вся логика приложения находится в моделях ActiveRecord.
По привычке, я добавляю еще один уровень абстракции — классы сущности, которые используют вызовы моделей ActiveRecord. Тем самым разделяя уровни логики (средняя и низкая). В контроллерах при этом вызываются методы созданных классов.
Насколько оправдана такая схема? Может быть для RoR такая детализация не нужна.
Зависит от задачи.
К примеру, если у вас 16 баз данных на 4 серверах, и данные для определенной задачи дергаются не с одного источника (читай — базы данных), то почему бы и нет?
Не очень понятно какую ответсвенность вы возлагаете на эти классы сущности.
Я, например, частенько использую отдельные классы для ViewModel.
При желании для этого можно даже готовый гем использовать: github.com/jcasimir/draper