mongoidのupdate_allが常にnilを返すときがある

mongoid で複数のドキュメントの集まりである mongo_documents を以下のように update_all した時に、

mongo_documents.update_all(status: value)

ローカルの開発環境では書き換えたレコード数やエラーなどが入った hash を返していたのに、ステージング環境では成功しようが成功しまいがnilが返ってきてはてなってなっていた。

http://stackoverflow.com/questions/12291534/mongoid-update-query-sets-other-attributes-to-nil

ここを見ていてもしやとおもってmongoidの設定ファイルを見ていたらセーフモードがproductionとdevelopmentだけ有効になっていた。許可をえてstagingもセーフモードにさせてもらって解決した。

config/mongoid.yml に options > safe:true を設定すれば大丈夫ですし、1クエリをセーフモードで実行することも可能です。

参考: 書き込みが完了しなくても応答が返る?

Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です