在constrinsts中使用域类中的字段

时间:2015-09-24 13:47:57

标签: grails gorm

如何使用域类中的一个字段设置GORM的最大值?

class Test {
    Date start
    Date end

    static constraints = {
        end max: new Date()
        start max: end // <-- here is the problem
    }
}

如果我在上面这样做,我会收到错误:

No such property: start for class: org.grails.datastore.mapping.config.groovy.MappingConfigurationBuilder
groovy.lang.MissingPropertyException: No such property: start for class: org.grails.datastore.mapping.config.groovy.MappingConfigurationBuilder
...

我正在使用 Grails 3.0.4

1 个答案:

答案 0 :(得分:1)

我认为要求是将start的最大值设置为运行时中的end日期。这只能通过使用如下的自定义验证器来实现:

class Test {
    Date start
    Date end

    static constraints = {
        end max: new Date()
        start validator: { val, obj ->
            // val - The value of the property on which the validator is applied
            // obj - this object
            if( val > obj.end ) {
                // return false
                // or return max error
                // or return ['some message to pick up from message bundle']
            }
        }
    }
}

有关其他详细信息,请参阅validator