2010-12-03 8 views
1

Ich definiere einen Primärschlüssel in MongoMapper.Einen anderen Primärschlüssel in Mongomapper definieren

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

Das Problem ist, dass alles, was ich einen neuen Rekord in B hinzuzufügen, wie es scheint, dass ich die _id explicity angeben, wenn sie bereits in der externen ID definiert ist

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

, das nicht macht durchaus Sinn. Es sollte eine Möglichkeit geben, externalId als Primärschlüssel anzugeben, nein?

Antwort

1

Wenn Ihr Problem mit BSON ist :: ObjectId ich ein Plugin erstellt, die Ihnen helfen können, fügt dieses Plugin automatisch erhöht ID für MongoMapper Dokumente

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

Ich würde nicht versuchen, den Primärschlüssel mit Mongomapper zu definieren - es wird automatisch die _id für Sie erstellen. Ich empfehle nicht, dieses Verhalten zu ändern.

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

B.new.id 
#4cf86bf1de2f8970ea000179 

B.find("4cf86bf1de2f8970ea000179") 

Ich glaube nicht, dass Sie Ihre eigene PK, zusammengesetzte oder anders schaffen können.

Verwandte Themen