Я пытаюсь написать запрос для встроенного Mongoid :: Document, который находит любую запись, где поле "address" не равно ни nil, ни "".
Используя комбинацию документации MongoDB, эта проблема в отчетах об ошибках Mongoid и документации Mongoid, я думаю, что-то вроде этого должно работать:
scope :with_address, where("$or" => [{:address => {"$ne" => nil}}, {:address => {"$ne" => ""}}])
Когда я запускаю это, селектор выглядит нормально:
1.9.2p290 :002 > report.document.records.with_address
=> #<Mongoid::Criteria
selector: {"$or"=>[{:address=>{"$ne"=>nil}}, {:address=>{"$ne"=>""}}]},
options: {},
class: GlobalBoarding::MerchantPrincipal,
embedded: true>
Но когда я смотрю на результаты, они содержат запись с пустым адресом:
1.9.2p290 :007 > report.document.records.with_address.last
<Record _id: 4f593f245af0501074000122, _type: nil, version: 1, name: "principal contact 3", title: "", dob: nil, address: "", email: "", phone: "", fax: "">
Я не могу понять, правильно ли я делаю запрос, если этоошибка с Mongoid, или если есть другая проблема.У кого-нибудь есть опыт работы с таким запросом?