开拓者改造宝石,如何处理这种类型的输入验证?

时间:2017-12-21 00:31:27

标签: ruby-on-rails ruby validation reform trailblazer

我们正在考虑使用改革宝石来验证输入。

我们面临的一个问题是我们接受这种格式的输入:

params = {
  records: {
    "record-id-23423424": {
      name:       'Joe Smith'
    }
    "record-id-43234233": {
      name:       'Jane Doe'
    }
    "record-id-345234555": {
      name:       'Fox trot'
    }
    "record-id-34234234": {
      name:       'Alex'
    }
  }
}

所以,如果我们要创建改革班

class RecordForm < Reform::Form
  property :records
  validates :records, presence: true

  # ?????????
end

我们如何验证记录的内容以确保每个记录的名称?记录id值未提前知道。

1 个答案:

答案 0 :(得分:0)

改革目前不允许动态属性,实际上,由于改革应该是一个特定于UI的表单对象,所以它没有计划。

解决方案是将您的输入预先解析为what Laura suggests。然后,您可以为每个字段设置嵌套属性。

collection :records do
  property :id # manually parsed
  property :name
end