Frage

In Online-API beziehen sie sich auf Mongo::ObjectID.

Ich habe require 'mongo', aber Ruby findet ihn immer noch nicht.Zum Beispiel muss ich ein Objekt anhand seiner ID finden und mache Folgendes:

mongo_db['post'].find({_id: Mongo::ObjectID(params[:id])}).next

und es scheint, dass es Mongo :: ObjectID nicht finden kann und führt zu: NoMethodError - undefined method ``ObjectID' for Mongo:Module:

Nach einiger Zeit begann ich, Code zu generieren und zu tun

mongo_db['post'].find({_id: BSON::ObjectId(params[:id])}).next

und es hat funktioniert!

Was ist also der Unterschied zwischen BSON :: ObjectId und Mongo :: ObjectID und was muss ich tun, damit letzteres funktioniert (und muss ich es wirklich tun)?

PS: Ich habe

bson (1.5.2, 1.4.1)
    Authors: Jim Menard, Mike Dirolf, Kyle Banker
    Homepage: http://www.mongodb.org
    Installed at (1.5.2): /usr/local/lib64/ruby/gems/1.9.1
                 (1.4.1): /usr/local/lib64/ruby/gems/1.9.1

    Ruby implementation of BSON

mongo (1.5.2, 1.4.1)
    Authors: Jim Menard, Mike Dirolf, Kyle Banker
    Homepage: http://www.mongodb.org
    Installed at (1.5.2): /usr/local/lib64/ruby/gems/1.9.1
                 (1.4.1): /usr/local/lib64/ruby/gems/1.9.1

    Ruby driver for the MongoDB

War es hilfreich?

Lösung

Hier sind zwei Änderungen am Ruby-Treiber relevant.Der erste ist:

https://jira.mongodb.org/browse/RUBY-158

Dadurch wurde die ObjectID in die ObjectId-Version "camel case" verschoben.Der Wechsel vom Mongo-Namespace zum BSON-Namespace erfolgte viel früher (0.2). Den letzten Eintrag in der Verlaufsdatei finden Sie hier:

https://github.com/mongodb/mongo-ruby-driver / blob / master / docs / HISTORY.md

Das eigentliche Problem ist natürlich die alte und mürrische Dokumentation, daher habe ich eine Pull-Anfrage zum Aktualisieren eingereicht:

https://github.com/mongodb/mongo-ruby-driver/ziehen / 90

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top