Mongoid - alternatywa

W jaki sposób za pomocą Mongoida wywołać zapytanie w postaci alternatywy?
Employee.where(someting) + Employee.where(something_else)
zwraca obiekt typu Array.
Ja chcę żeby zwróciło obiekt typu Mongoid::Criteria, tak jak robi to pojedyncze wywołanie Employee.where(something)

where("$or" => [{:display_name => query }, {:email => query}])

A gdybym chciał w miejscu kryterium dać scope’y zdefiniowane w modelu Employee?

[quote=Tomash]where("$or" => [{:display_name => query }, {:email => query}])
[/quote]

[code=ruby]# Match all people with either last name Penn or Teller

Person.any_of({ last_name: “Penn” }, { last_name: “Teller” })

mongodb query selector

{ “last_name” :
{ “$or” :
[ { “last_name” : “Penn” }, { “last_name” : “Teller” } ]
}
}[/code]
http://mongoid.org/docs/querying/criteria.html#any_of

rozwin pytanie a najlepiej opisz co wogole probujesz osiagnac (wraz z kodem z modelu)

[code=ruby]# Match all people with either last name Penn or Teller

Person.any_of({ last_name: “Penn” }, { last_name: “Teller” })

mongodb query selector

{ “last_name” :
{ “$or” :
[ { “last_name” : “Penn” }, { “last_name” : “Teller” } ]
}
}[/code]
Powiem na czym polega problem takiego podejścia. Załóżmy, że chcę wyszukać osobę o nazwisku Penn lub Teller oraz o imieniu Ron lub Dave.

Zapytanie:

Person.any_of({ last_name: "Penn" }, { last_name: "Teller" }).any_of({first_name: 'Ron'}, {first_name: 'Dave'})

zwraca alternatywę wszystkich czterech możliwości:

{"$or"=>[{:last_name=>"Penn"}, {:last_name=>"Teller"}, {:first_name=>"Ron"}, {:first_name=>"Dave"}]}

Ja natomiast oczekiwałem koniunkcji alternatyw.