我想知道是否有办法将附加值传递给模式匹配器。我正在使用 Play Framework 2.1-RC1 和 mysql。
目前我有一个名为Post的类,用于在我们的 Web 应用程序中表示用户帖子。用户访问该站点,该站点使用以下方法从数据库中提取在浏览器中呈现精美的帖子。这一切都很好。
case class Post(id:Long, message:String)
object Post extends ObjectModel {
  val simple = {
    get[Long]("id") ~
    get[String]("message") map {
      case id~message=>
        Post(
          id,
          message
        )
    }
  }
  def fetch(): List[Post] = {
    DB.withConnection { implicit connection =>
      val ret = SQL( "SELECT id, message FROM post" ).as(Post.simple *)
    }
  }
}
现在,我想做的是向Post类添加另一个字段,该字段表示当前用户(基于会话)是否已为帖子加注星标。这需要一个额外的数据库调用,理想情况下我想做如下的事情:
case class Post(id:Long, message:String, starred:Boolean)
object Post extends ObjectModel {
  val simple = {
    get[Long]("id") ~
    get[String]("message") map {
      case id~message=>
        Post(
          id,
          message,
          didStar(id, userId)
        )
    }
  }
...
所以我的问题是如何将userId值获取到模式匹配器。我不想通过数据库传递数据。我可以将userId传递给 fetch() 方法,但是如何从模式匹配器中引用它?还是有另一种方法来解决这个问题?