2014-03-14 47 views
0

我一直在試圖弄清楚如何做到這一點,而無需手動定義驗證,但目前爲止沒有任何成功。電梯記錄:所需字段的空值,但沒有驗證錯誤

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

...和文檔保存到(蒙戈)DB沒有externalId

所以問題是:是否有任何方式都有電梯自動驗證缺少的字段,而我不必手動添加東西到validations

編輯:我對於Django和Rails等框架提供的開箱即用的生產力類型的想法太多了嗎?即像基本和非常頻繁的驗證,而不必寫任何東西,但只有一些聲明性屬性/標誌。如果是,那麼Lift爲什麼選擇不提供這種東西?爲什麼有人不是想要.validate自動考慮所有的def required_? = true/def optional_? = false字段?

回答

1

據我所知,沒有明確定義驗證的方式來驗證字段。 optional_?required_?未提供驗證的原因是,它並不總是清楚要使用什麼邏輯,尤其是對於非String字段。 Crudify使用required_?值本身來確定是否在生成的UI中將該字段標記爲需要,但是由您提供適當的邏輯以確定滿足要求。

驗證本場可容易,因爲

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

或者看到的答案,您的其他問題here對於如何創建一個通用的Required特質。

+0

我的假設是,鑑於如此高生產力和相對成熟的框架,這樣的要求以前會突然出現一百萬次,而且有些東西只是開箱即用......但無論如何,那麼'required_?'和'optional_?'呢? –

+0

順便說一句,如何定義這樣一個'Required'特徵並不完全明顯,因爲涉及的類型... –

+0

好的,更新了我的答案 –