【问题标题】:trailblazer reform gem, how to handle this type of input validation?开拓者改革 gem,如何处理这种类型的输入验证?
【发布时间】:2017-12-21 00:31:26
【问题描述】:

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

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

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

我们如何验证记录的内容以确保每个记录都有名称? record-id-values 无法提前知道。

【问题讨论】:

  • 你还在坚持目前的模式吗?如果架构类似于{ records: [{ id: "record-id-23423424", name: 'Joe Smith'}, ...] },则创建验证会更容易

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


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多