Change validation to use ActiveModel::Validator

It allows specifying validations as
```ruby
validates :field, as_enum: true
```