Помните, что ActiveRecord - это не только способ доступа к базе данных, но и шаблон для интеграции ваших данных в ваше приложение: идея о том, что каждая модель контролирует свои собственные данные и сохраняет / извлекает / запрашивает их по мере необходимости,с экземпляром модели, представляющим строку базы данных.
Естественно, вам не нужно использовать этот шаблон, но он является одним из ядер Rails, поэтому рассматривая ActiveRecord как еще один метод доступа к данным, который необходимо абстрагировать,вы теряете много функциональности.
Обратите также внимание, что ActiveRecord уже абстрагирует тип базы данных с помощью адаптера базы данных, поэтому в MySQL, Oracle и т. д. можно легко добавить реляционную базу данных..
Однако, чтобы ответить на ваш вопрос, на самом деле нет необходимости заключать вашу реализацию доступа к данным в другой класс просто для обеспечения согласованного интерфейса.Как вы говорите, ruby не имеет интерфейсов типа Java, но мир ruby также обычно не пытается гарантировать, что разработчики могут делать только законные вещи.Вы можете создать группу классов доступа к данным, которые предлагают один и тот же набор методов, создать модульные тесты, чтобы убедиться, что эти методы согласованы (и выступать в качестве исполняемой документации этих методов), а затем доверить разработчикам правильные вызовы в зависимости от того, чтореализацию они выбирают.Это большое культурное отличие от мира Java, где все закодировано для интерфейсов, а методы являются окончательными, а объекты неизменяемыми.Требуется некоторое привыкание.