Минимальное ограничение Grails для проверки даты - PullRequest
9 голосов
/ 02 ноября 2010

Я новичок в граале и заводной. У меня есть доменный класс Project с начальной и конечной датой. Я хочу вставить ограничение, указывающее, что конечная дата должна быть больше начальной даты (а затем еще один дочерний объект проекта должен иметь свою начальную дату и конечную дату для проверки с датами родительского проекта). Возможно ли это с минимальным ограничением или мне нужно поместить его в другое место? Уникальное ограничение позволяет таким образом связывать два свойства, надеясь, что ограничения min / max позволяют это. Я пытался

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

Выдает ошибку, говоря, что свойство startDate недоступно в Project

1 Ответ

14 голосов
/ 02 ноября 2010

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

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

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

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

...