1
Mapper와 CRUDify를 사용하는 리프트 애플리케이션 (모델에 대해서는 아래 참조)에서 모델의 일부 중복을 제거하려고합니다. 다음과 같이 나는 반복 오브젝트 정의의 일부 클래스 멤버를 오버라이드 (override) :Mapper 모델에서 CRUDify 멤버 (사용자 모델에 액세스해야하는)의 재정의에 혼합 할 수있는 특성을 작성하려면 어떻게해야합니까?
override def showAllMenuLocParams: List[Loc.AnyLocParam] = List(If(User.loggedIn_? _, "Not logged in"))
override def createMenuLocParams: List[Loc.AnyLocParam] = List(If(User.loggedIn_? _, "Not logged in"))
다음과 같이 내가 형질에 혼합 할 수 있도록,이 돌봐 특성을하고 싶습니다
:
object Test1 extends Test1 with LongKeyedMetaMapper[Test1] with CRUDify[Long, Test1] with MyNewTrait {
MyNewTrait 같은 것을 정의 할 것
:
trait MyNewTrait {
override def showAllMenuLocParams: List[Loc.AnyLocParam] = List(If(User.loggedIn_? _, "Not logged in"))
override def createMenuLocParams: List[Loc.AnyLocParam] = List(If(User.loggedIn_? _, "Not logged in"))
}
나는이 특성은 사용자 모델에 액세스해야 할 것 같아요. 누구든지 형질을 쓰는 방법에 대해 조언 할 수 있습니까? 위에 기술 된 것처럼, 특성은 불완전하다. 나는
/* ********************************************************************************************* */
object Test1 extends Test1 with LongKeyedMetaMapper[Test1] with CRUDify[Long, Test1] {
override def dbTableName = "test1"
override def fieldOrder = List(c1, c2, c3)
override def showAllMenuLocParams: List[Loc.AnyLocParam] = List(If(User.loggedIn_? _, "Not logged in"))
override def createMenuLocParams: List[Loc.AnyLocParam] = List(If(User.loggedIn_? _, "Not logged in"))
}
class Test1 extends LongKeyedMapper[Test1] with IdPK {
def getSingleton = Test1
object c1 extends MappedString(this, 50)
object c2 extends MappedString(this, 50)
object c3 extends MappedString(this, 50)
}
/* ********************************************************************************************* */
object Test1 extends Test1 with LongKeyedMetaMapper[Test1] with CRUDify[Long, Test1] {
override def dbTableName = "test2"
override def fieldOrder = List(c1, c2, c3)
override def showAllMenuLocParams: List[Loc.AnyLocParam] = List(If(User.loggedIn_? _, "Not logged in"))
override def createMenuLocParams: List[Loc.AnyLocParam] = List(If(User.loggedIn_? _, "Not logged in"))
}
class Test1 extends LongKeyedMapper[Test1] with IdPK {
def getSingleton = Test1
object c1 extends MappedString(this, 50)
object c2 extends MappedString(this, 50)
object c3 extends MappedString(this, 50)
}
아마도 당신은 당신의 형질에 대한 의존성 주입과 같은 것이 필요할 것입니까? http://jonasboner.com/2008/10/06/real-world-scala-dependency-injection-di/ – Ashalynd
@Ashalynd : Aleksey의 답변이 트릭을 만들었지 만 링크를 보내 주셔서 감사합니다. 특성 및 DI에 대한 정보는 다음과 같습니다. 유능한. –