Dry-Validation - неявное преобразование Float в String по правилам - PullRequest
0 голосов
/ 24 мая 2019

Я пытаюсь проверить значение ключа в моей схеме.

Но я получаю no implicit conversion of Float into String, потому что значение является плавающей точкой, и я использую регулярное выражение для проверки формата.

VALIDATION_PARAMETERS = Dry::Validation.Schema(ApplicationSchema) do
  required(:uid, :string).filled
  required(:value).filled

  rule(insulating_surface: [:uid, :value]) do |uid, value|
    uid.eql?('insulating_surface').then(value.format?(FLOAT_FORMAT))
  end
end

Я также пытался преобразовать Float в String, но он возвращает undefined method format?' for #<String:0x0000557d8877a910>

rule(insulating_surface: [:uid, :value]) do |uid, value|
  uid.eql?('insulating_surface').then(value.to_s.format?(FLOAT_FORMAT))
end

1 Ответ

1 голос
/ 24 мая 2019

Я не очень знаком с сухой проверкой, но я вижу много документированных встроенных предикатов, включая один float?. Вместо этого попробуйте следующее:

rule(insulating_surface: [:uid, :value]) do |uid, value|
  uid.eql?('insulating_surface') > value.float?
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...