Если у вас по каким-то причинам принимаемые на вход данные и модели не совпадают 1-в-1, то входящие данные проще валидировать не через модели, а отдельным вадидатором, а потом уже преобразовать в модели. Такой валидатор можно написать на ActiveModel, Dry, json-schema или еще как, тут вопрос ваших предпочтений. Валидации в модели они не заменяют, их все равно лучше написать (аналогично с внешними ключами, уникальными индексами и прочими ограничениями на уровне БД).
Так а почему dry? У dry-подхода есть полезные особенности, например типы/схемы/структуры легко переиспользовать, ими проще проверять сильно вложенные данные, можно гибче настроить проверки(в сравнении с ActiveModel). Из минусов можно назвать то, что оно пока не устаканилось, бывают ломающие изменения. Не всегда есть исчерпывающая документация, сообщество не такое большое как у рельс.