2012-05-09 27 views
17

Tôi có một số rắc rối với mongoid:Mongoid không trong truy vấn

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 

thử nghiệm thất bại. Tôi đã cố gắng sử dụng nơi (: id => {'$ nid' => [2]}), nhưng nó có tác dụng tương tự.

Điều gì là sai? Làm thế nào để sử dụng "không trong" điều kiện với mongoid?

PS, "thứ hai" là ok, với test "đầu tiên" trôi qua, vì id = 1

Trả lời

34

Hãy thử truy vấn này:

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

Trong khóa chính MongoDB có tên _id. Mongoid cố gắng thân thiện và che giấu một phần sự kiện này từ nhà phát triển bằng cách đặt bí danh cho id trong mô hình đối tượng. Nhưng khi bạn thực hiện các truy vấn, nó không thể nói nếu bạn muốn khóa chính _id hoặc một số trường hoàn toàn bình thường id.

Các vấn đề liên quan