Первоначальный анализ данных перед проверкой: populator - PullRequest
0 голосов
/ 30 октября 2018

Итак, у меня есть объект реформы, и я хочу проанализировать свои строковые данные перед проверкой, чтобы иметь возможность использовать сухую проверку required(:my_field).filled(gt?: 0)

Для этого я использую популятор property :membership_fee, populator: MyPopulator

Мой вопрос заключается в том, каков наилучший способ доступа и анализа данных, которые потребовал объект реформирования.

На данный момент я использовал:

property :my_field, populator: lambda { |fragment| fragment[:doc]['my_field'] = BigDecimal.new(fragment[:doc]['my_field']) }

Но я не уверен, что это лучший способ приблизиться к нему - я имею в виду доступ к нему по фрагментам [: doc] - это самый красивый способ сделать это? Я не уверен, какой именно фрагмент [: doc] используется для дальнейшей реформы.

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

Я бы использовал предварительную обработку ввода для сухой проверки https://dry -rb.org / gems / сухую проверку / предварительную обработку ввода /

configure do
  config.type_specs = true
end

required(:my_field, Types::Params::Integer).filled(gt?: 0)
0 голосов
/ 30 октября 2018

Я думаю, вы можете просто назначить десятичное значение для my_field, возвращая этот объект, например:

property :my_field, populator: ->(_fragment:, **) do 
  BigDecimal.new(my_field)
end
...