Да, использование объектов в качестве простых хешей - это плохо.
Вы получаете доступ к их внутреннему состоянию напрямую, что обходит любой интерфейс, который они могут представить, и делает ваш класс тесно связанным с внутренним представлением JobParameters:: Базовый класс.
Если вам необходимо получить содержимое объекта JobParameters :: Base в виде хэша, добавьте метод to_hash в JobParameters :: Base и делегируйте этому методу в своем атрибуте...
Это означает, что если позже вы добавите кеширование (например!) В JobParameters :: Base и используете ключ __cache для хранения внутренних данных, вы можете безопасно внести это изменение, также изменив метод to_hashудалить внутренние данные из хэша, который он возвращает.
Можно хранить атрибут как просто хеш, но если вы храните благословенный хеш, то не доходите до его мужества ...