def validate(*keys, &validator)
      key = flatten_keys(keys)
      values = validators[key] || []
      values << validator
      validators[key] = values
    end
def validate(*keys, &validator)
      key = flatten_keys(keys)
      values = validators[key] || []
      values << validator
      validators[key] = values
    end
Register a validation rule for a nested key

 @param [Array[String]] keys
   a deep nested keys
 @param [Proc] validator
   the logic to use to validate given nested key

 @api public