2013-02-17 96 views
0

我希望能够在使用Play Forms将请求映射到对象时获取用户。为了使事情更加复杂,我还使用了SecureSocial框架,因此request.user是securesocial.core.SocialUser。Play Forms:从安全操作映射request.user?

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

我是斯卡拉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

你可以这样类似:

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

感谢您的帮助。没有意识到你可以做到这一点 – 2013-02-25 17:33:30