2012-02-02 1 views
4

CRUDify를 사용하여 일부 Lift 응용 프로그램을 함께 사용하여 일부 데이터베이스 테이블에서 기본 CRUD 작업을 수행했습니다.Lift 및 CRUDify와 함께 열거 필드 사용

여러 열의 유형이 "CHAR (1 byte)"이며 "Y"또는 "N"의 값을 저장하기위한 것입니다. 내 모델 클래스는이 예제와 같이 해당 필드를 정의

... 
object isActive extends MappedEnum(this, YesNo) { 
override def dbColumnName = "IS_ACTIVE" 
override def displayName = "Active" 
} 
... 

유형, "YesNo가"로 정의 된 스칼라 객체는 다음과 같습니다 : 자동 생성 CRUDify가있는 웹 브라우저 양식에서

object YesNo extends Enumeration { 
    val Y, N = Value 
} 

이와 같은 열은 "Y"및 "N"을 사용 가능한 옵션으로 표시합니다. 그러나 행을 만들거나 수정할 때 실제로 저장되는 것은 "1"또는 "0"입니다!

분명히, 나는 보트를 여기에서 놓치고있다. 어떻게, CRUDify 사용자가 "Y"또는 브라우저에서 "N"에서 선택할 수 있습니다 것을이 같은 및 데이터베이스에 상점 중 하나 "Y"또는 "N"구조 할 수 있습니까?

+0

CRUDify를 모르지만 Y 또는 N이 0 또는 1로 표현되는 경우 결과를 '부울'로 저장하면 CRUDify와의 연결이 더 쉬워야합니다. –

+0

ㅎ ... 훌륭한 코멘트와 생각이 내 마음을 넘어 섰다! 그러나이 경우 데이터 모델을 제어 할 수 없습니다 (이러한 최첨단 프레임 워크 중 하나를 작동 시키려고 할 때 가장 최악의 문장을들을 수 있습니다!). Lift와 CRUDify는이 프로젝트에서 내가 선택한 기술이 아니었지만, 그 중 하나를 제어 할 수는 없습니다.우리의 수석 건축가는 이러한 프레임 워크를 위해 열심히 일하기 때문에이 프로젝트의 사명 중 일부는 팀 경험을 향상시키는 것입니다. –

답변

0

흠 ... 거대한 스칼라/리프트 커뮤니티가 여기 StackOverflow에 없습니다! 사실, Lift의 "CRUDify"하위 구성 요소에 대한 커뮤니티가별로 없을 수도 있습니다.

어쨌든 나는 "liftweb"Google 그룹스 메일 링리스트에 가입하여 답변을 찾았습니다. 분명히 이것은 CRUDify 프레임 워크의 알려진 제한 사항입니다. 그것은 수년 동안 그랬고 누구나 특히 신경 쓰는 제한이 아니지만 알려졌습니다.

개발자 한 명이 MappedField이라는 자신 만의 사용자 정의 하위 클래스를 만들고이를 Lift 모델 클래스의 매핑 된 유형으로 사용하여이 문제를 해결하려고했습니다. 140 줄 클래스는, 이메일 간단히 그것을 설명과 함께,에서 확인할 수 있습니다 :이 2009 년에 다시 100 % 일 것을 확신하지

http://groups.google.com/group/liftweb/browse_frm/thread/34560f30fab299a7/cdca54c8e1486237?pli=1

, 그것은 문제의 톤을 가지고 때 2012 년에 여기에서 사용하려고했습니다. (Scala와 Lift는 지난 3 년 동안 많이 바뀌 었습니다).

나는 이것을 MappedField 서브 클래스로 만들기 위해 약간의 시간을 투자했다 ... 그리고 나서 CRUDify 이외의 방법을 선택하기위한 승인을 받았다. 이 작은 응용 프로그램을위한 임무의 일부는 무엇을 해야할지에 대한 것과 Lift와 관련이없는 것에 대해 배우는 것이 었습니다. 나는 지금 우리가 그 임무의 일부를 성취했다고 생각합니다. :)

그러나이 연구 및 샘플 코드가 나중에 다른 사람들에게 도움이된다면, 그러면 좋을 것입니다.