grails - 从今天开始13年前的Grails验证

标签 grails groovy

我正在尝试将注册时的dateOfBirth设置为至少13岁。我不想在User类上有一个age字段,我只想坚持使用dateOfBirth

我如何包括验证以精确减去13年(占leap年)。

目前在我的约束中,我正在使用以下行:
dateOfBirth blank: false, max: (new Date() - 13*365)
我宁愿不使用自定义验证,因为我相信一定有没有它的方法。我尝试了以下方法:
dateOfBirth blank: false, use(TimeCategory) { max: new Date() - 13.year }

  • 由于use(TimeCategory)部分(我相信)
  • ,因此无法使用

    我也曾尝试使用魔术数字插件无济于事。我试过了:
    dateOfBirth blank: false, max: 13.years.ago

    dateOfBirth blank: false, max: 13.years.ago.toDate()
    并导入了com.metasieve.magicnumbers.*包。

    最佳答案

    自定义验证器有什么问题?我认为这是一个很好的案例,其中自定义验证器是正确的选择。

    import groovy.time.TimeCategory    
    
    dateOfBirth validator: {
        use (TimeCategory) {
            it?.before(13.years.ago) 
        }
    }
    

    关于grails - 从今天开始13年前的Grails验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21125188/

    相关文章:

    grails - 在grails中设置全局变量

    java - 查询环境变量而不评估它

    mysql - 将 Grails Gorm 连接到预先存在的 MySQL 数据库

    maven - 无法解析类org.jenkinsci.plugins.workflow.support.steps.build.DownstreamFailureCause

    grails - grails Controller 的缓存头插件

    Grails:通过服务中的数据绑定(bind)完成的回滚关联

    java - 使用 findAll 子树意外结束

    grails - "Could not find ApplicationContext, configure Grails correctly first"

    java - 优化建议?

    java - 使用 UnetSocket 在 unetstack 中创建客户端和服务器节点之间的通信