2012-10-05 9 views
1

Salat/Casbah/Mongo 스택을 사용하여 유지되는 스칼라 케이스 클래스가 있다고 가정하고 쉽게 수행 할 수있는 것처럼 사전 지속성 유효성 검사 논리를 설정하려고합니다 ActiveRecord 훅을 사용하여 Rails에서 작업하거나 JSR 303 bean validation을 사용하여 Java에서 수행 할 수 있습니다.Salat/Casbah를 사용하여 스칼라 케이스 클래스의 사전 지속성 유효성 확인

아마도 기능적 패러다임이 생각하는 더 나은 방법이 있지만, 나는 다음과 같은 것을 달성하고 싶다 : 나는 문제가 이런 일을 수행하는 방법에 대한 문서를 찾는 데

case class SomeItem(
    id: ObjectId = new ObjectId, 
    someProperty: String) { 

    @PrePersistence 
    def validate() = { 
    //perform some logic 
    //fail document save in certain conditions 
    } 
} 

을 Salat에. 필자는 @Persist 주석을 보았지만 특정 값을 직렬화하고 후크를 만들지 않는 것으로 보입니다.

내 케이스 클래스에 대한 SalatDAO의 저장 방법을 재정의하는 것이 하나의 옵션처럼 보입니다. 누구든지 이것에 대한 예를 알고 있습니까, 아니면 지속성 이벤트에 묶여있는 유효성 검사를 처리하는 내장 된 방법을 알고 있습니까?

감사합니다.

답변

2

여기에 살랏 개발자.

예, @Persist은 단순히 생성자에없는 필드가 일련 화되도록하기위한 것입니다. 이는 MongoDB에서 데이터를 조작하는 데 특히 유용합니다. 한 가지 예는 모든 필드가 값으로 채워져 확실하게 정렬 할 수 있도록하려는 것이지만 그 값은 존재하지 않을 수도있는 Option입니다.

불행하게도, 자바 드라이버는 Ruby 드라이버 :(같은 라이프 사이클 콜백을 제공하지 않습니다

하지만 당신은 할 수있을만큼 쉽게해야 원하는 것을. https://github.com/novus/salat/issues에 문제를 제기하고 검증하려는 방법을 설명하세요 행동을 취하기 위해 토론을 시작할 수 있고 1.9.2 버전에서 뭔가를 얻을 수 있습니다.

+0

다음은이 문제에 대한 후속 일정을 알려 주셔서 감사합니다. 이 유효성 검사 동작은 나를 위해 작동 할 수 있습니다. 지금 SalatDAO subclassing 오전 및 내 계획은 해결 방법으로 일부 지속성 기능을 재정의하는 것입니다. – kgx