2010-12-03 4 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

あなたの問題はBSONである場合:: ObjectIdが、私はあなたを助けることができるプラグインを作成し、このプラグインは自動MongoMapper文書

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 
のIDをインクリメント追加します
0

mongomapperを使用して主キーを定義しようとしません。自動的に_idを作成します。この動作を変更しようとするのはお勧めしません。

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

B.new.id 
#4cf86bf1de2f8970ea000179 

B.find("4cf86bf1de2f8970ea000179") 

あなた自身のPK、コンポジットなどを作成することはできません。

関連する問題