mongoidのupdate_allが常にnilを返すときがある
Date:2016-08-24 23:57:09 +0900
Categories: ETC
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