0

当我使用 Play Forms 将请求映射到对象时,我希望能够接触到用户。为了让事情变得更简单,我还使用了 SecureSocial 框架,request.usersecuresocial.core.SocialUser 也是如此。

下面的代码是有问题的,因为映射的doc对象是一个不可变的案例类,所以我不能重新分配lender。如果可能的话,我宁愿保持不变性。

我是 Scala 菜鸟,所以不知道如何继续。

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)
        })
}

感谢您的帮助。

谢谢

4

1 回答 1

1

你可以这样:

doc => AsyncResult {
     val toInsert = doc.copy(lender = models.User.fromSecureUser(request.user))
     collection.insert(toInsert).map(_ => Ok)
}
于 2013-02-25T13:39:57.310 回答