NOTO

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

 Date:2016-08-24 23:57:09 +0900
 Categories: ETC

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

mongo_documents.update_all(status: value)

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

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

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

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

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

Tweet