1

所以我有我的改革对象,我想在验证之前解析我的字符串数据,以便能够使用干验证 required(:my_field).filled(gt?: 0)

为了做到这一点,我使用populator property :membership_fee, populator: MyPopulator

我的问题是访问和解析改革对象所采用的数据的最佳方式是什么。

目前,我使用了:

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

但我不确定这是否是处理它的最佳方式 - 我的意思是通过 fragment[:doc] 访问它是最漂亮的方式吗?我不确定 fragment[:doc] 究竟用于后来的改革。

4

2 回答 2

2

我会使用干验证输入预处理https://dry-rb.org/gems/dry-validation/input-preprocessing/

configure do
  config.type_specs = true
end

required(:my_field, Types::Params::Integer).filled(gt?: 0)
于 2018-10-30T13:20:04.123 回答
1

我认为您可以只分配十进制值来my_field返回该对象,例如:

property :my_field, populator: ->(_fragment:, **) do 
  BigDecimal.new(my_field)
end
于 2018-10-30T13:12:13.080 回答