Вопрос

Я новичок в Граалях и Groovy. У меня есть класс домена проекта с начальным и концом. Я хочу ввести ограничение, указывающее, что дата окончания должна быть больше, чем дата начала (а затем еще большее другое дочернее объект проекта необходимо иметь его Startdate и EndDate Validate с датами родительского проекта). Возможно ли это с минимумом ограничения или я должен поставить его в другое место? Уникальное ограничение позволяет связать два свойства таким образом, надеясь, что ограничения MIN / MAX позволяют. я пытался

startDate(blank:false)
endDate(blank:false, min:'startDate')

Это бросает ошибку, говоря, что начать свойство не доступно в проекте

Это было полезно?

Решение

Попробуйте использовать пользовательский валидатор:

static constraints = {
    endDate(validator: { val, obj ->
        val?.after(obj.startDate)
    })
}

val это значение поля и obj является ссылкой на проверку объекта. Закрытие может содержать любую логику, которая вам нужна, так что вы можете расширить вашу проверку в том, как вы описываете в своем вопросе (путем доступа к дочерним объектам, которые вы относитесь к использованию obj).

Пользовательский валидатор довольно гибкий. Посмотри на Документация. Отказ В идеале вы хотите вернуть пользовательское сообщение; Как сделать это также можно найти в документах, связанных выше.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top