Использование синтаксиса Mongoid запроса против Activerecord - PullRequest
1 голос
/ 12 апреля 2011

У меня маленькая загадка, из-за которой я запутался.

В консоль рельсов, если я использую

@o = ObjName.where(o_id: "VAL")

Я не вернул объект. Я получаю это, хотя:

 => #<Mongoid::Criteria
  selector: {:conditions=>{:site_id=>"PST"}},
  options:  {},
  class:    Site,
  embedded: false>

Но если я использую:

@o = ObjName.first(:conditions => {:o_id => "VAL"})

Да. Там, где функция используется внутри Mongoid, и моя модель включает Mongoid. Поэтому я не понимаю, почему это не работает.

Ответы [ 2 ]

5 голосов
/ 12 апреля 2011

Mongoid очень ленив в своей загрузке.Он будет выполнять запрос и загружать результаты в объекты только при выполнении итерации по результатам.

Поэтому Model.find выполнит метод mongodb findOne и загрузит результаты.

@o = ObjName.where(o_id=>"VAL").first #will push into an object

@o = ObjName.where(:status=>"whoknows").all
#query has not been loaded
@o.each do |o|
  #now the query has been executed
  puts o
end
0 голосов
/ 12 апреля 2011

Может быть, вам просто нужно ".all" в конце вашего запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...