2011-09-23 3 views
2

CouchRest 모델의 GUID 대신 _id 필드로 사용자 정의 문자열 값 (예 : 객체 이름)을 사용하는 방법이 있는지 궁금합니다.CouchRest 모델은 _id 필드 대신 guid 대신 사용자 정의 값을 사용합니다.

예.

기본적으로 GUID는 _id 필드로 사용됩니다. 하지만 name 속성을 _id로 사용하고 싶습니다. 문서를 처음 저장하기 전에 메서드를 호출하고, 문서의 _id로 그 할당합니다

class Cat < CouchRest::Model::Base 
    property :name 
    unique_id :name 
end 

UNIQUE_ID를 다음과 같이

답변

3

당신은 UNIQUE_ID 사용하여 시도 할 수 있습니다. 그러나 _id와 name 필드가 설정된 Cat 문서를 갖게됩니다. 이름이 변경되면 동기화되지 않을 수도 있습니다.

의 가능성이 더 나은 옵션은 단순히이 경우에는 추가 속성이 없기 때문에보고 문서

class Cat < CouchRest::Model::Base 
    def name 
    self['_id'] 
    end 

    def name=(value) 
    self['_id']=value 
    end 
end 

의 _id 속성을 변경 것 getter 및 setter를 생성하는 것입니다, 이름은 항상 ID를 반환합니다 문서의 그러나 _id가 다시 지정되지 않아 문서가 작성되면 이름을 변경할 수 없습니다.

자세한 내용은 Here의 고유 ID에 대한 rdoc입니다. 소파 휴식 모델의 위키 항목을 validations

+0

에 보내 주셔서 감사합니다. 나는 그것을 좋아하고 그것을 시도 할 것이다. 이름 바꾸기 작업은 CouchDB에서 _id 작업의 이름을 바꾸는 것을 인식하지 못하기 때문에 실제로는 이전 문서를 삭제하고 새 문서를 다시 만들어야합니다. –

+0

감사합니다. 맞습니다. _id를 재 할당하여 이름을 바꿀 수없는 것 같습니다. 내 답변을 편집했습니다. – sebzz