Граальс Мин ограничения для проверки даты
-
28-09-2019 - |
Вопрос
Я новичок в Граалях и 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
).
Пользовательский валидатор довольно гибкий. Посмотри на Документация. Отказ В идеале вы хотите вернуть пользовательское сообщение; Как сделать это также можно найти в документах, связанных выше.