Определение другого первичного ключа в Mongomapper - PullRequest
1 голос
/ 03 декабря 2010

Я определяю первичный ключ в MongoMapper.

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

Проблема в том, что все, что я добавляю новую запись в B, кажется, что мне нужно для простоты указать _id, когда он уже определен во внешнем идентификаторе

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

Это не совсем имеет смысла. Должен быть способ указать externalId в качестве первичного ключа, нет?

Ответы [ 2 ]

1 голос
/ 31 декабря 2010

Если ваша проблема с 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
0 голосов
/ 03 декабря 2010

Я бы не стал определять первичный ключ с помощью mongomapper - он автоматически создаст _id для вас.Я не рекомендую пытаться изменить это поведение.

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

B.new.id
#4cf86bf1de2f8970ea000179

B.find("4cf86bf1de2f8970ea000179")

Я не верю, что вы можете создать свой собственный ПК, составной или другой.

...