Grails Дата Ограничения - PullRequest
       10

Grails Дата Ограничения

0 голосов
/ 04 января 2011

У меня есть класс домена с ограничением, которое позволяет пользователям не моложе 18 лет.

Это работает:

birthday(nullable: false, max:new Date(use(TimeCategory){18.years.ago.getTime()}))

Но почему это не работает?

birthday(nullable: false, max:(use(TimeCategory){18.years.ago}))

На самом деле Ago возвращает объект типа java.util.Date.

Или лучше всего, конечно, это:

birthday(nullable: false, max: 18.years.ago)

Ответы [ 2 ]

0 голосов
/ 04 января 2011

Неправильный тип.Обратите внимание, что ваша дата - java.sql.Date, а не java.util.Date.

use (TimeCategory) {
    assert 18.years.ago.class == java.sql.Date
}

Это уродливая маленькая деталь реализации.Попробуйте это в своем ограничении:

birthday(nullable: false, max:(use(TimeCategory){18.years.ago  as Date}))
birthday(nullable: false, max: 18.years.ago  as Date)

Если вы смешаете в TimeCategory, например, в BootStrap.groovy, вы сможете просто написать вторую версию.Миксин можно сделать так:

Integer.metaClass.mixin(groovy.time.TimeCategory)
0 голосов
/ 04 января 2011

Посмотрите на Плагин MagicNumbers и используйте 18.years.ago.toDate ()

...