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

Validation 提升记录:必填字段的值为空,但没有验证错误,validation,scala,lift,lift-record,Validation,Scala,Lift,Lift Record,我一直在试图弄清楚如何在不手动定义验证的情况下实现这一点,但到目前为止没有任何成功 我有一个StringField class Foo private()用ObjectIdKey[Foo]扩展了MongoRecord[Foo]{ ... 对象外部ID扩展了StringField(这个,255){ //所有这些似乎都不会对验证产生任何影响: 覆盖def可选值?=错误 是否需要覆盖def?=真 覆盖def defaultValueBox=空 } ... } 现在,当我在Foo上调用.validat

我一直在试图弄清楚如何在不手动定义验证的情况下实现这一点,但到目前为止没有任何成功

我有一个
StringField

class Foo private()用ObjectIdKey[Foo]扩展了MongoRecord[Foo]{
...
对象外部ID扩展了StringField(这个,255){
//所有这些似乎都不会对验证产生任何影响:
覆盖def可选值?=错误
是否需要覆盖def?=真
覆盖def defaultValueBox=空
}
...
}
现在,当我在
Foo
上调用
.validate
时,它不会返回任何错误:

val foo=foo.createRecord
foo.validate匹配{
case Nil=>foo.save
...
}
…并将文档保存到(mongo)数据库中,不使用
externalId

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


编辑:对于Django和Rails等框架提供的开箱即用的生产力类型,我是否考虑得太多了?i、 例如,基本和非常频繁的验证,而不必编写任何东西,只需编写一些声明性属性/标志。如果是,为什么Lift选择不提供这种开箱即用的东西?为什么有人不希望
.validate
自动考虑所有所需的
def?=真
/
def可选=false
字段?

据我所知,在没有明确定义验证的情况下,无法验证字段。
optional
required
不提供验证的原因是并不总是清楚要使用什么逻辑,特别是对于非
字符串
字段。Crudify使用
required \
值本身来确定是否在生成的UI中将字段标记为required,但这取决于您提供正确的逻辑来确定是否满足要求

验证字段可以非常简单

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

或者看看你的另一个问题的答案,关于如何创建一个通用的
必需的
特征。

我的假设是,考虑到这样一个高效且相对成熟的框架,这样的需求以前会出现一百万次,而且有些东西是开箱即用的。。。但是无论如何,
required
optional
的目的是什么呢?顺便说一句,考虑到所涉及的类型,
required
特性的定义并不完全清楚……即使将
def验证修改为
valMinLen(1,“required”),该示例也不会编译超级验证
;好的,谢谢!顺便说一句,
可选
必需
仅由Crudify使用吗?实际上至少还有一个区别:StringField的默认/初始
值框
将包含
完整(“”
)而
可选
true
将导致
为空
<代码>必需\=然而,true | false
没有相同的效果。(与其他字段类型相同)