1

我是 groovy grails 的新手,因此我们将不胜感激。我正在开发一个跟踪员工工作场所历史的 grails 应用程序。验证要求之一是员工的开始日期和结束日期持续时间不应重叠。这意味着 startDate..endDate 范围在每个员工的就业日期中应该是唯一的。所以我的问题是我应该如何处理这个验证?它应该在静态约束块中作为自定义验证器完成还是应该在数据库级别完成?

4

1 回答 1

2

虽然您对此的实现可能取决于您的特定需求,但对于您应该如何执行此操作没有绝对正确的答案。但是,其中一个或另一个有充分的理由:

  • 如果您要通过应用程序以外的方式导入数据(或以某种方式在数据库中创建数据),那么您要么必须在数据库中实现此验证,要么在应用程序中安全地处理无效数据。
  • 通过使用自定义验证器来处理此验证(以及任何由此产生的错误)会容易得多。
  • 如果您在数据库中实现验证,您将不得不处理特定于数据库的错误,并且在刷新数据之前不会知道它是否有效。这对你不利。

从我的角度来看,我只会在应用程序中实现验证器,然后有办法处理从其他地方加载的无效数据。如果数据有效性是最重要的,那么我可能会在两个地方都实现验证器,100% 确定逻辑匹配!

于 2019-01-15T21:28:38.957 回答