рельсы запроса mongoid 3 - PullRequest
       3

рельсы запроса mongoid 3

0 голосов
/ 15 марта 2011

совершенно новый для MongoDB / mongoid и все еще довольно зеленый на ruby ​​/ rails

на консоли рельсов:

t = Task.all(:conditions  => {:title => "task2"})

=> #<Mongoid::Criteria
selector: {:title=>"task2"},
options:  {},
class:    Task,
embedded: false>


>> t.first
=> #<Task _id: 4d7e2cdb73ec3227dd000009, title: "task2", latitude: 23.987904829, longitude: -12.9423875,  created_by: "4d792d6973ec3248e3000001">

возвращает то, что я ожидал, но

t = Task.where(:created_by => "4d792d6973ec3248e3000001")

=> #<Mongoid::Criteria
selector: {:created_by=>BSON::ObjectId('4d792d6973ec3248e3000001')},
options:  {},
class:    Task,
embedded: false>

>> t.first 
=> nil

тот же результат с:

t = Task.all(:conditions  => {:created_by => "4d792d6973ec3248e3000001"})

вот модель:

class Task
  include Mongoid::Document
  field :title
  field :latitude,                  :type => Float
  field :longitude,                 :type => Float
  field :created_by
end

что я делаю не так?

обновленный пример:

>> Task.new(:title => "task8", :created_by => "4d792d6973ec3248e3000001")
=> #<Task _id: 4d81037973ec32cc22000003, latitude: nil, longitude: nil, title: "task8", created_by: "4d792d6973ec3248e3000001">

>> t = Task.all(:conditions  => {:created_by => "4d792d6973ec3248e3000001"})
=> #<Mongoid::Criteria
selector: {:created_by=>BSON::ObjectId('4d792d6973ec3248e3000001')},
options:  {},
class:    Task,
embedded: false>

>> t.first 
=> nil

мне нужно специально определить create_by как: type => String?

Ответы [ 2 ]

1 голос
/ 16 марта 2011

Похоже, созданный_бай хранится в виде строки в вашем документе, но затем вы запрашиваете поиск ObjectId. ObjectId и строки не совпадают.

Попробуйте изменить

>> Task.new(:title => "task8", :created_by => "4d792d6973ec3248e3000001")

до

>> Task.new(:title => "task8", :created_by => BSON::ObjectId("4d792d6973ec3248e3000001"))
0 голосов
/ 29 апреля 2012

Вы должны включить эту функцию в mongoid, как описано в docs :

class Person
  include Mongoid::Document
  include Mongoid::Timestamps
end
...