2012-06-06 3 views
1

Я наслаждаюсь изумительным MongoDB в Rails с помощью Mongomapper, но у меня проблемы с удалением записей.Удаление записей с помощью Mongomapper in Rails

Каков приемлемый способ удаления записей, а также удаление всего документа?

Я попытался использовать Stuff.destroy_all, но он, похоже, разбил веб-сервер.

ответ

4

Извините, это плохо документировано. Я открываю для этого проблему.

См. class methods и instance methods.

my_doc.destroy # fires callbacks 
my_doc.delete  # no callbacks, just removes it from the database 
MyDoc.destroy_all # fires callbacks, shouldn't crash...! 
MyDoc.delete_all # no callbacks 
MyDoc.destroy("b965105ea203368234636df2", "368234636df21c64f05358a4") 
MyDoc.delete("b965105ea203368234636df2", "368234636df21c64f05358a4") 
1

Да, я наткнулся и неуклюже удалил вещи в MongoMapper. Этот метод, кажется, работает так же:

MessageLog.destroy_all(:created_at.gte => @start_time) 

Взял меня некоторое время, чтобы понять, почему delete_all был оооочень гораздо быстрее, чем destroy_all :-p

0

И delete_all и destroy_all также работают как отважные методы, так что вы можете делать такие вещи, как:

MyDoc.where(status: 'unneeded').delete_all 
MyDoc.where(status: 'unneeded').destroy_all 

в зависимости от того, если вы хотите, чтобы избежать обратных вызовов (delete_all) или выполнить их (destroy_all).

Смежные вопросы