Scala CRUDify MegaProtoUser-这是正确的解决方案吗?

Scala CRUDify MegaProtoUser-这是正确的解决方案吗?,scala,lift,crud,Scala,Lift,Crud,我在Scala 2.9.1中使用liftweb 2.5-SNAPSHOT 在我的lift应用程序中,我希望使用一个用户类,该类同时具有MegaProtoUser特性(用于每个用户的自我管理)和CRUDify特性(用于管理员的CRUD视图) 当我尝试一种简单的方法并同时使用这两个traint为用户扩展我的模型对象时,我会得到编译错误,因为这两个trait在不使用覆盖的情况下有几个共同部分(函数和类型) 相反,我对两个模型对象使用以下方法: import net.liftweb.mapper._

我在Scala 2.9.1中使用liftweb 2.5-SNAPSHOT

在我的lift应用程序中,我希望使用一个用户类,该类同时具有MegaProtoUser特性(用于每个用户的自我管理)和CRUDify特性(用于管理员的CRUD视图)

当我尝试一种简单的方法并同时使用这两个traint为用户扩展我的模型对象时,我会得到编译错误,因为这两个trait在不使用覆盖的情况下有几个共同部分(函数和类型)

相反,我对两个模型对象使用以下方法:

import net.liftweb.mapper._

/**
 * Entity class for users
 */
class User extends MegaProtoUser[User] {
  override def getSingleton = User
}

/**
 * Provides the meta model for User together with the self administration features for each user
 */
object User extends User with MetaMegaProtoUser[User] {
  override def dbTableName = "users"
}

/**
 * Again the meta model for User, but this time without self administration but with the CRUD view for the administrator
 */
object UserAdministration extends User with KeyedMetaMapper[Long, User] with ProtoUser[User] with CRUDify[Long, User] {
  override def dbTableName = User.dbTableName
}
这种方法似乎有效,但我不确定是否遗漏了一些细节

  • 有更好的方法吗
  • 我的方法是否有一些我在这里遗漏的无意影响
  • 最后,当我将来升级到一个更新的lift版本时,它还能工作吗