Mongoid метод pull_all не работает - PullRequest
1 голос
/ 28 июня 2011

У меня есть массив ссылочных объектов в документе Mongoid.Использование current_user.add_to_set(:whatever, @object.id) прекрасно работает, добавляя элемент BSON ObjectId в массив и сохраняя current_user.

Однако, когда я пытаюсь удалить элемент с pull_all, он не работает.Кажется, ничего не происходит:

current_user.pull_all(:whatever, BSON::ObjectId(@object.id))

Есть идеи, что я делаю неправильно?

Спасибо!

1 Ответ

3 голосов
/ 28 июня 2011

Вам нужно обернуть элементы, которые вы хотите pull_all, в массив, я запустил что-то (в Mongoid 2.0.2), похожее на это, и все заработало:

current_user.add_to_set(:whatever, @object.id) # worked exactly as you said, added the id to the `whatever` array
current_user.pull_all(:whatever, [@object.id]) # removed the id from the `whatever` array

Таким образом, вы также можете указать несколько идентификаторов для удаления за одну операцию, таким образом:

current_user.pull_all(:whatever, [@object1.id, @object2.id])
...