2012-08-01 2 views
1

mises à jour en vrac ne fonctionnent plus après la mise à niveau MongoId 3. Dans MongoId 2, j'ai eu les éléments suivants:MongoId 3 mises à jour en vrac

Shift.where(
    :account_id => current_account.id, 
    :location => self.department.location.name, 
    :department => self.department.name, 
    :position => self.name_was, 
    :color => self.color_was, 
    :date.gte => Date.current 
).update_all(position: self.name, color: self.color) 

Je sais que les critères sont de retour des résultats, mais il ne met plus à jour les documents. Voici l'instruction dans Mongoid 3:

Shift.where(
    :account_id => current_account.id, 
    :location => self.department.location.name, 
    :department => self.department.name, 
    :position => self.name_was, 
    :color => self.color_was, 
    :date.gte => Date.current 
).update(position: self.name, color: self.color) 

Je cours Rails 3.2.7 et Mongoid 3.0.3. Est-ce que quelque chose a changé que je ne connais pas? Voici également l'entrée des journaux:

MOPED: 127.0.0.1:27017 UPDATE  database=development collection=shifts selector={"$query"=>{"account_id"=>"5017e8774f4e481fe3000001", "location"=>"Downtown", "department"=>"Cashes", "position"=>"Cash 1", "date"=>{"$gte"=>2012-08-01 00:00:00 UTC}}, "$orderby"=>{"start_at"=>1}} update={"$set"=>{:position=>"Cash A", :color=>"#42ed23"}} flags=[:multi] (0.2141ms) 

Cependant, rien n'est mis à jour dans la base de données.

Répondre

0

Je pense que c'est parce que votre requête utilise une chaîne comme account_id, pas un Moped :: BSON :: ObjectId.

Si vous faites l'où sans la mise à jour. Vous n'avez aucun résultat, je suppose.

+0

Malheureusement, je sais que ce n'est pas le problème. J'ai couru le où sans la mise à jour et il renvoie des résultats. – Dowker