Подтвердить что ты не робот

Монгоид не в запросе

У меня есть некоторые проблемы с mongoid:

  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

Тест завершился неудачно. Я попытался использовать where (: id = > {'$ nid' = > [2]}), но он имеет тот же эффект.

Что не так? Как использовать условие "не в" с мангоидом?

PS, "second" в порядке, с "первым" испытанием прошло, потому что id = 1

4b9b3361

Ответ 1

Попробуйте этот запрос:

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

В первичном ключе MongoDB есть имя _id. Монгоид пытается быть дружелюбным и частично скрывает этот факт от разработчика, наложив его на id в объектной модели. Но когда вы выполняете запросы, он не может определить, нужен ли вам первичный ключ _id или какое-то полностью обычное поле id.