複数ユーザが同一レコードを同時に編集した場合、特に同一項目を編集した場合は意識しておくことが必要です。
2パターンを検証してみます。
パターン1:自分が編集した項目以外を別ユーザが同時保存した場合
同一レコードを同時編集していきます。
・取引先の初期状態:電話番号が「03-1111-1111」である状態からスタートします。
・ユーザA(自分)がこの取引先を編集モードにします。
・ユーザB(他のユーザ)が同じ取引先を編集モードにします。
・ユーザA(自分)が電話番号を「03-1111-0000」に変更し保存します。
・ユーザB(他のユーザ)がFaxを「06-0000-0000」と入力し保存します。
保存直後に下記トースト表示があり他のユーザが同時に編集していたことが分かります。
電話番号、Faxとそれぞれ別項目を更新しました。
結果的に取引先はユーザB(他のユーザ)が電話を編集した通り「03-1111-0000」に更新されています。
FaxはユーザA(自分)が入力した通り「06-0000-0000」が保存されています。
このように複数ユーザが同一レコードの別項目を編集するとトースト表示で別ユーザが同時編集していたことが分かりますが、
各ユーザが入力した値はそのまま反映されることが分かります。
パターン2:自分が編集した項目と同じ項目を別ユーザが同時保存した場合
同一レコードを同時編集していきます。
・取引先の初期状態:電話番号が「03-1111-0000」である状態からスタートします。
・ユーザA(自分)がこの取引先を編集モードにします。
・ユーザB(他のユーザ)が同じ取引先を編集モードにします。
・ユーザA(自分)が電話番号を「03-1111-8888」に変更し保存します。
この段階で「03-1111-8888」は正常に保存完了します。
・ユーザB(他のユーザ)が電話番号を「03-1111-9999」に変更し保存します。
保存が完了する前に下記のようにどちらの値を最終的な正の値として保存するか選択する画面が表示されます。
あくまでユーザB(他のユーザ)に表示される画面であり、既に保存完了したユーザA(自分)には表示されません。
保存ボタンを押して初めて他のユーザも同時に同一項目を編集していたのだと気づくことが出来ます。
注意点
この挙動はコリジョンディテクション (衝突検出) としてドキュメント化されています。
この挙動は編集またはインライン編集時に適用されます。
そのためアクションやパスでのレコード更新時に適用されないため注意が必要です。
また、標準機能で用意されている機能であるため無効化することは出来ません。
コメント