我试图在Play框架中使用Scala / Slick来保存数据。我通过json发送请求,并且我试图通过将其与这样的模型匹配来验证所述请求:
request.body.asJson.map(_.validate[Foo] match {...}
问题是:如何设置默认列值(为false)?
这是我的进化文件:
CREATE TABLE Foo(
...
deleted BOOLEAN NOT NULL DEFAULT FALSE,
...
)
这是我的模特(.scala):
case class Foo(
...
deleted: Boolean,
...)
这是我的道(.scala):
class Foo(tag: Tag) extends TableFoo(tag, "Foo"){
...
def deleted = column[Boolean]("deleted", O.Default(false))
...
def * = (..., deleted, ...) <> ((Foo.apply _).tupled, Foo.unapply)
}
验证对模型的请求时出现问题。将deleted
定义为Option[Boolean]
时,会为None/Null
列写deleted
。将其定义为Boolean
时,验证失败。
据推测,因为请求缺少属性deleted
。
为什么定义默认值,当验证失败后或Option[Boolean]
只写None/Null
时?有没有一种简单的方法可以在Scala / Slick或Evolutions中设置可靠的默认值?