提升记录:必填字段为空值,但没有验证错误

埃里克·卡普伦

我一直在尝试找出如何在不手动定义验证的情况下执行此操作,但到目前为止没有任何成功。

我有一个 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
  }
  ...
}

现在,当我调用.validateFoo,它不会返回任何错误:

val foo = Foo.createRecord
foo.validate match {
  case Nil => foo.save
  ...
}

...并且文档以no格式保存到(mongo)DB中externalId

所以问题是:有没有办法让Lift自动验证缺少的字段,而无需我手动向其中添加内容validations

编辑:我是否想过像Django和Rails这样的框架提供的开箱即用的生产力类型呢?即像基本的和非常频繁的验证之类的事情,而无需编写一些声明性属性/标志。如果是的话,Lift为什么选择不提供此类东西呢?为什么会有人希望.validate自动考虑到所有的def required_? = true/def optional_? = false领域?

戴夫·惠特克

据我所知,如果没有显式定义验证,就无法验证字段。其原因optional_?required_?不提供验证的是,它并不总是很清楚什么逻辑来使用,尤其是对于非String领域。required_?值本身使用Crudify确定是否在所生产的UI需要标记字段,但是它给你提供了正确的逻辑,以确定该条件成立。

验证字段就像

override def validations = super.validations :: valMinLen(1, "Required!")

或在此处查看有关其他问题的答案,以了解如何创建通用Required特征。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章