Причина в следующем предложении в связанных документах:
Они получают инициализированный экземпляр, Атрибут и переданное значение.
blockquote>Для более продвинутой проверки, подпись
def validator(inst, attribute, val)
.Просто измените подписи на
def _validate_polling_interval(_, __, polling_interval):
и
def _validate_batch_size(_, __, batch_size):
, и это будет работать.
Вот полный пример описательной документации: http://www.attrs.org/en/stable/init.html#callables
P.S. Использование утверждений в производственном коде не лучшая идея. Например. запуск
python -O
лишит их. Я бы порекомендовал поднять старый добрыйValueErrors
или даже описательный его подкласс.
Я предложил бы использовать или запрос или объем сессии с этой целью. Вероятно, большая часть DRY, путь состоит в том, чтобы заполнить объем, является фильтром. Например, в файле grails-app/conf/SecurityFilters.groovy (необходимо будет создать его):
class SecurityFilters {
def filters = {
populateCurrentUser(controller: '*', action: '*') {
before = {
request.user = User.get(session.userId)
}
}
}
}
Пример предполагает хранение идентификатора текущего пользователя в "идентификаторе пользователя" атрибута сессии и что у Вас есть Доменный класс "Пользователь". Используя его в расположении так просто:
<g:if test="${request.user}">
Current User: ${request.user.username}
</g:if>