在Lift中,整个ProtoUser
构造都非常出色,令人惊讶,它为您带来了很多好处,但是大多数优点(不幸的是,像Lift中的许多东西一样)都没有记载。
只有一个问题:它保存了我不需要的数据,甚至包含了我不需要的数据。例如,我希望我的用户使用昵称登录,而我不需要知道他的位置,语言环境或名字/姓氏。但是在注册时,我需要未在标准注册页面上显示的信息。
我的第一个想法是重新编写自己的User特质,但随后我将不得不重新编写所有 session 代码,授权等。已经有替代方法了吗?还是可以更改ProtoUser
来拥有我自己的注册和登录页面以及仅我的必要数据?
感谢收听。
最佳答案
我不确定是否有任何简便的方法可以删除ProtoUser中的任何字段,但是一种选择是查看ProtoUser中的fieldOrder方法,我相信这将定义protoUser使用的字段。关于注册问题,有一个方法signUpFields可以让您覆盖注册时需要的字段,如下所示override def signupFields = email :: userName :: password :: Nil
假设您定义了自己的userName对象。对于editFields也有类似的方法,这实际上并不能解决删除它跟踪的字段的问题,但也许fieldOrder可能会做些事情,我的另一建议是查看Proto User的来源,看看是否可能会覆盖已映射的对象,并使映射器以某种方式忽略它们。这仍然是解决Proto User的一种方式,可以避免必须重写其中包含的许多代码。