2

我正在开发一个表单,我希望用户可以选择返回。最终,所有字段都需要完成,我想在将记录标记为“完成”之前合并适当的模型级别字段验证。我可以想到几种方法来做到这一点:

  1. 创建两张表,一张用于“草稿”状态的记录,验证规则更宽松(即字段不一定要完整才能保存记录),另一张表用于存储已提交的记录为“完整”,显然具有更严格的验证规则。

  2. 仅创建一个表来存储记录,其中包含一个标记为“isComplete”的字段,并根据此值确定要应用哪些验证规则。

我倾向于选项#2,因为它涉及的工作部分更少(在选项#1中,我必须确保当我将记录状态从“草稿”更改为“完成”时,它会从一个表中删除并添加到其他)。问题是我不知道如何在 Rails 中优雅地做到这一点。

最终,我确信这个问题之前已经解决了,我的问题是:在这种情况下,最佳实践是什么?

4

1 回答 1

3

绝对是第二个选项。有一个布尔值的 isComplete 或 Draft 选项。然后在您的模型中,您可以根据 isComplete 字段的状态控制要运行的验证。这可以通过多种方式完成,例如 Rails 具有条件验证的概念,它允许您在验证上指定 :if 选项,以便您可以根据完整状态限制运行的内容。您还可以添加 before_save 或 before_update 挂钩来根据记录是否为草稿来运行方法。使用这两个工具,您应该能够以直观的方式将所有内容放在一个表中。

于 2012-09-20T17:20:13.063 回答