validations
validations copied to clipboard
Unexpected value returned from `Hanami::Validations::Namespace`
Environments
- CRuby 2.7.6
- hanami-validations 1.3.9
Issue detail
When the validator class is defined in the module with name includes Validator
, Hanami::Validations::Namespace
returns unexpected value.
require 'hanami/validations'
module Validators
class UserValidator
include Hanami::Validations
messages :i18n
validations do
required(:name) { filled? & str? }
end
end
end
puts Validators::UserValidator.namespace.to_s #=> s.user_validator
Expected
puts Validators::UserValidator.namespace.to_s #=> validators.user
Motivation
I'd like to define custom error messages for this validator, like below.
# config/locales/errors.en.yml
en:
errors:
rules:
validators:
user:
rules:
name:
filled?: "must be non empty string"
str?: "must be non empty string"
How to escape
1. define namespace manually
https://guides.hanamirb.org/v1.3/validations/advanced-usage/#custom-namespace
require 'hanami/validations'
module Validators
class UserValidator
include Hanami::Validations
namespace :'validators/user'
end
end
2. apply monkey patch (for Ruby >= 2.5.0)
require 'hanami/validations'
module Hanami
module Validations
class Namespace
private
def name_without_suffix
@name.delete_suffix(SUFFIX)
end
end
end
end
module Validators
class UserValidator
include Hanami::Validations
end
end
puts Validators::UserValidator.namespace.to_s #=> validators.user
Now hanami-validations
gem supports Ruby >= 2.3.0, so I give up to create pull request :(