我想知道是否有办法将附加值传递给模式匹配器。我正在使用 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() 方法,但是如何从模式匹配器中引用它?还是有另一种方法来解决这个问题?