当我使用Play Forms将请求映射到对象时,我希望能够找到用户。为了使事情更加繁琐,我也使用SecureSocial框架,因此request.user
是一个securesocial.core.SocialUser。
下面的代码存在问题,因为映射的doc
对象是一个不可变的案例类,所以我无法重新分配lender
。如果可能的话,我宁愿保持不变性。
我是Scala noob所以不确定如何继续。
def create = SecuredAction() { implicit request =>
models.Lendable.form.bindFromRequest.fold(
errors => {
BadRequest(errors.errorsAsJson)
},
doc => AsyncResult {
// TODO: set the lender without mutating a val
doc.lender = models.User.fromSocialUser(request.user)
collection.insert(doc.copy()).map(_ => Ok)
})
}
非常感谢您的帮助。
由于
答案 0 :(得分:1)
你可以这样:
doc => AsyncResult {
val toInsert = doc.copy(lender = models.User.fromSecureUser(request.user))
collection.insert(toInsert).map(_ => Ok)
}