2010-12-03 2 views
1

MongoMapper에서 기본 키를 정의하고 있습니다.Mongomapper에서 다른 기본 키 정의

class B 
    key :_id, string 
    key :externalId, string 
end 

문제는 내가 B에 새 레코드를 추가 모든 것을, 이미하지 않는 외부 ID

B.new(:_id=>"123", :external_id=>"123) 

에 정의 될 때 나는, 명시 적으로 _ID를 지정해야 할 것으로 보인다이다 꽤 의미가 있습니다. externalId를 기본 키로 지정하는 방법이 있어야합니다. 아니요.

답변

1

, 난 당신을 도울 수있는 플러그인을 만들어,이 플러그인은 자동 MongoMapper 문서에 ID를 증가 추가

https://github.com/phstc/mongomapper_id2

movie = Movie.create(:title => 'The Simpsons Movie') 
movie.id # BSON::ObjectId('4d1d150d30f2246bc6000001') 
# Here is the mongomapper_id2 
movie.id2 # 1 

movie2 = Movie.create(:title => 'Pirates of Silicon Valley') 
movie2.id2 # 2 
0

mongomapper를 사용하여 기본 키를 정의하려고하지 않습니다. 자동으로 _id를 만듭니다. 이 동작을 변경하려고하지 않는 것이 좋습니다.

class B 
    include MongoMapper::Document 
    key :your_alternate_id, String, :index=>true 
end 

B.new.id 
#4cf86bf1de2f8970ea000179 

B.find("4cf86bf1de2f8970ea000179") 

나는 자신의 PK, 합성물 또는 다른 것을 만들 수 있다고 생각하지 않습니다. 문제는 BSON으로 경우 :: ObjectId가