播放表单:从安全操作映射request.user?

时间:2013-02-17 10:39:11

标签: playframework-2.0 securesocial

当我使用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)
        })
}

非常感谢您的帮助。

由于

1 个答案:

答案 0 :(得分:1)

你可以这样:

doc => AsyncResult {
     val toInsert = doc.copy(lender = models.User.fromSecureUser(request.user))
     collection.insert(toInsert).map(_ => Ok)
}