Cela doit être une réponse simple, mais je suis perplexe. J'utilise une application Sinatra avec Mongo Mapper et je tente de détruire une poignée de documents associés aux identifiants d'utilisateur dans le tableau rem_users. La boucle suivante recherche le GroupMember associé pour chaque élément de rem_users et tente de le supprimer. Quand je l'exécute, le GroupMember n'est pas détruit.Mongo Mapper ne détruira pas le document pendant la boucle
rem_users.each do |du_id|
###
GroupMember.first('$and' => [{dealer_user_id: du_id}, {group_id: g.id}]).destroy
end
rem_users est un tableau de ids BSON qui ont été converties en chaînes. J'ai vérifié que la requête tire le GroupMember correct avec cette requête, et si je mets un binding.pry où le ### est dans l'exemple et copiez-collez la ligne suivante exacte de la boucle, le GroupMember est détruit avec succès . J'ai essayé:
remgm = GroupMember.all('$and' => [{group_id: g.id}, {dealer_user_id: rem_users}])
remgm.each {|gm| GroupMember.destroy(gm.id)}
et le résultat est le même. Il n'y a aucune validation d'aucune sorte sur le modèle GroupMember. Merci!
Vous pouvez simplifier cela avec 'GroupMember.destroy_all (: dealer_user_id.in => rem_users,: group_id => g.id)' pour les obtenir tous en un seul coup. –