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ć?
Dziękujemy! Zastanawiam się, jak powinieneś odróżnić powłokę Mongo. – lawrence
Witam, możesz użyć funkcji typeof, takiej jak: 'typeof my_var' –
@RafaelOliveira To nie działa dla mnie. Obie zwracają "ciąg". – mlovic