前端有一个时间控件,选择一个时间段,传入后端为一个数组,长度为 2,正常的 controller 可以将这个参数正常解析为数组。 但是我借用 ransack 然后在 config/initializers/ransack.rb 中定义如下方法:
Ransack.configure do |config|
config.add_predicate 'between',
arel_predicate: 'between',
formatter: proc { |v|
parts = eval(v)
OpenStruct.new(begin: parts['0'].to_time, end: parts['1'].to_time)
},
validator: proc { |v| v.present? },
type: :string
end
其中 formatter 中拿到的 v,内容类似: '{"0"=>"Mon Jun 26 2017 16:31:43 GMT+0800", "1"=>"Mon Jul 31 2017 16:31:43 GMT+0800"}',是一个 string 类型。
如上 eval 处理可以将其解析为 hash,请问 eval 外有方法解析这个字符串吗?