3

我正在使用带有 Scala 2.9.1 的 liftweb 2.5-SNAPSHOT。

在我的电梯应用程序中,我想同时使用一个 USer 类,用于每个用户的自我管理的 MegaProtoUser 特征和用于管理员的 CRUD 视图的 CRUDify 特征。

当我尝试一个简单的方法并同时使用两个训练扩展我的 User 模型对象时,我得到编译错误,因为这两个特征有几个共同的部分(函数和类型)而不使用覆盖。

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

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
}

这种方法似乎有效,但我不确定是否遗漏了一些细节。

  1. 有更好的方法吗?
  2. 我的方法是否有一些我在这里遗漏的无意影响?
  3. 最后,当我将来应该升级到更新的电梯版本时,它仍然可以工作吗?
4

0 回答 0