2012-05-09 10 views
17

que tienen algunos problemas con MongoId:no MongoId en consulta

test "Test candidate" do 
    User.create(:id => 1, :sex => User::Male, :country => 1, :city => 1) 
    User.create(:id => 2, :sex => User::Female, :country => 1, :city => 1) 
    User.create(:id => 3, :sex => User::Female, :country => 1, :city => 1) 

    user = User.not_in(:id => [2]).second 
    assert_not_equal(user.id, 2) 
    end 

falló la prueba. He tratado de usar, donde (: id => { '$ nid' => [2]}), pero tienen mismo efecto.

¿Qué pasa? ¿Cómo usar la condición "no en" con mongoide?

PS, "segundo" está bien, la "primera" prueba superada, debido id = 1

Respuesta

34

Intentar esta consulta:

user = User.not_in(:_id => [2]).second 

En clave principal MongoDB tiene nombre _id. Mongoid intenta ser amigable y oculta parcialmente este hecho del desarrollador allisándolo a id en el modelo de objetos. Pero cuando realiza consultas, no puede decir si desea la clave principal _id o algún campo completamente ordinario id.