5

次の例を検討してください。

> x = User.first # or any persisted Mongoid::Document
=> #<User _id: 52014532a6356d1ac9000001, ...>
> x.set :foo, :bar
=> :bar
> x.set :foo2, 'bar'
=> "bar"

「foo」と「foo2」はRubyではどこにも宣言されていないことに注意してください。

次に、MongoDB シェルで次のようにします。

> db.users.findOne({_id: ObjectId('52014532a6356d1ac9000001')})    
{
  "_id" : ObjectId("52014532a6356d1ac9000001"),
  "foo" : "bar",
  "foo2" : "bar",
  ...
}

しかし今、Ruby に戻ります。

> x = User.find x.id; nil # to clear out any possibility of metadata on the instance
=> nil
> [x.read_attribute(:foo), x.read_attribute(:foo2)]
=> [:bar, "bar"]

それはどのように知っていますか?

4

1 に答える 1

3

BSONが値のシンボルタイプをサポートしているように見え、グーグルで見つけました:

https://github.com/mongodb/mongo-ruby-driver/wiki/FAQ#Frequently AskedQuestions-Ruby-IseethatBSONsupportsasymboltype.DoesthismeanthatIcanstoreRubysymbolsinMongoDB%3F

于 2013-10-19T01:26:00.730 に答える