I still don’t see why not just use ActiveModel::Validations and create your own validations there and remove the explicit validations from any given model
This is a good option, but not everyone is using Rails / ActiveRecord / ActiveModel and thus they would need to add a fairly large dependency just to get validations.
In terms of features I haven’t used dry-validation enough to know how it stacks up against AM::Validations as my requirements thus far have been fairly simple. Initial learning of the DSL aside it has been easy enough to use. Not as easy as ActiveModel::Validation, but not significantly more difficult. This is probably due to familiarity with ActiveModel. It may be that it become easier to perform more complex validations succinctly in dry-validations, compared to ActiveModel::Validations, once the requirements are more complicated, I am yet to find out.
The other thing that springs to mind is that ActiveModel is still complex, it itself has a lot of responsibilities, even if as an end user you don’t use all of them, they are present in the library code and this could make it more challenging to change/understand for the maintainers. This is speculation and could be considered a pro or a con depending on perspective.
What ActiveModel::Validation does have going for it is that it is stable and has plenty of documentation. Dry-validation isn’t yet v1.0 so the DSL could change, I don’t know how likely this would be. I’ve used dry-validation recently without a problem in a few places as an alternative to an ActiveModel based “form object”.
The best I could suggest is to give it a spin and see how it fits your project.