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 черта характера.

Другие вопросы по тегам