Dry-Validation - неявное преобразование Float в String по правилам

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

Но я получаю 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 ответ

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

rule(insulating_surface: [:uid, :value]) do |uid, value|
  uid.eql?('insulating_surface') > value.float?
end
Другие вопросы по тегам