1

Mongoid 3 にアップグレードした後、一括更新が機能しなくなりました。Mongoid 2 では、次のことがありました。

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)

基準が結果を返していることはわかっていますが、ドキュメントが更新されなくなりました。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)

Rails 3.2.7 と Mongoid 3.0.3 を実行しています。私が気づいていない何かが変わったのですか?また、ログからのエントリは次のとおりです。

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)

ただし、データベースでは何も更新されません。

4

1 に答える 1

0

これは、クエリでMoped :: BSON :: ObjectIdではなく、account_idのような文字列が使用されているためだと思います。

更新せずにどこで行うか。私が思った結果はありません。

于 2012-08-03T07:15:38.940 に答える