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

时间:2012-12-07 20:45:01

标签: scala lift crud

我正在使用liftweb 2.5-SNAPSHOT和Scala 2.9.1。

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

当我尝试一个天真的apprach并同时使用两个traint扩展我的模型对象时,我会遇到编译错误,因为这两个特征有几个部分(函数和类型),而不使用覆盖。

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

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. 最后我还能继续工作,以后我将升级到更新的升力版吗?

0 个答案:

没有答案