Lift Record: пустое значение для обязательного поля, но нет ошибок проверки
Я пытался выяснить, как сделать это без определения валидации вручную, но пока безуспешно.
у меня есть StringField
class Foo private() extends MongoRecord[Foo] with ObjectIdKey[Foo] {
...
object externalId extends StringField(this, 255) {
// none of these seem to have any effect on validation whatsoever:
override def optional_? = false
override def required_? = true
override def defaultValueBox = Empty
}
...
}
Теперь, когда я звоню .validate
на Foo
, он не возвращает ошибок:
val foo = Foo.createRecord
foo.validate match {
case Nil => foo.save
...
}
... и документ сохраняется в (монго) БД без externalId
,
Таким образом, вопрос: есть ли вообще возможность, чтобы Lift автоматически проверял пропущенные поля, без необходимости вручную добавлять материал в validations
?
РЕДАКТИРОВАТЬ: я слишком много думаю с точки зрения типа производительности, которые фреймворки, такие как Django и Rails обеспечивают из коробки? то есть такие вещи, как базовая и очень частая проверка без необходимости писать что-либо, кроме нескольких декларативных атрибутов / флагов. Если да, то почему Lift решил не предоставлять такого рода вещи из коробки? Почему никто не хочет .validate
автоматически принимать во внимание все def required_? = true
/def optional_? = false
поля?
1 ответ
Насколько я знаю, у вас нет способа проверить поле без явного определения проверок. Причина того, что optional_?
а также required_?
не обеспечивает проверки в том, что не всегда понятно, какую логику использовать, особенно для не String
поля. required_?
Само значение используется Crudify, чтобы определить, нужно ли пометить поле в соответствии с требованиями в производимом пользовательском интерфейсе, но вы должны предоставить правильную логику, чтобы определить, что требование удовлетворено.
Проверить поле можно так же просто, как
override def validations = super.validations :: valMinLen(1, "Required!")
Или посмотрите ответ на ваш другой вопрос здесь о том, как создать общий Required
черта характера.