2014-02-13 27 views
0

我正致力於保護我的Scala應用程序。這裏是我的代碼:Scala:不是(String,models.Role)的成員

case class User(id: Option[Long], 
    role: Role) 

我試圖做這樣的事情,以獲取特定用戶的角色:

def authenticate(id: Long): String = db withSession { implicit db: Session => 
    val u = findUserById(id) 
    u.role 
} 

found : models.Role 
[error] required: String 

我猜models.Role等於(String, models.Role)。 我期待回到「UserRole」或「AdminRole」。是否有人可以點亮一些光

回答

0

聲明你的驗證方法說它返回String,但是你返回一個Role。似乎findUserById返回角色,所以我的猜測會是例如:

def authenticate(id: Long): String = db withSession { implicit db: Session => 
    findUserById(id) match { 
    case ar: AdminRole => "AdminRole" 
    case ur: UserRole => "UserRole" 
    } 
} 
+0

我明白這一點。你能給我一種將角色作爲字符串的方式嗎?不會'toString'返回「(角色,角色)? – goo

+0

@Jon對不起,我誤解了你的問題。角色類是怎麼樣的? –

+0

我已經更新了我的問題。'roleTypeMapper'映射每個一個字符串 – goo

相關問題