MAGx2
MAGx2

Reputation: 3189

Using field from domain class in constrinsts

How can I set max value for GORM using one field from domain class?

class Test {
    Date start
    Date end

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

If I'm doing like above I'm getting error:

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
...

I'm using Grails 3.0.4

Upvotes: 0

Views: 40

Answers (1)

dmahapatro
dmahapatro

Reputation: 50275

I believe the requirement is to set the max value of start to be the end date in the runtime. This can only be achieved by using a custom validator as below:

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']
            }
        }
    }
}

Refer validator for additional details.

Upvotes: 1

Related Questions