2013-10-19 7 views
5

Rozważmy następujący przykład:W jaki sposób Mongoid zna różnicę między wartościami łańcuchów a wartościami symboli?

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

pamiętać, że "foo" i "foo2" nie są zadeklarowane w Ruby wszędzie.

Następnie w MongoDB skorupy:

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

ale teraz z powrotem w 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"] 

Jak to wiedzieć?

Odpowiedz

3
+0

Dziękujemy! Zastanawiam się, jak powinieneś odróżnić powłokę Mongo. – lawrence

+1

Witam, możesz użyć funkcji typeof, takiej jak: 'typeof my_var' –

+0

@RafaelOliveira To nie działa dla mnie. Obie zwracają "ciąg". – mlovic

Powiązane problemy