Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

すでに締め切られている注文に対して、何度も締め切り操作ができてしまう #147

Open
yucao24hours opened this issue May 28, 2017 · 0 comments
Assignees
Labels

Comments

@yucao24hours
Copy link
Collaborator

https://idobata.io/ja/archives/organization/esm/room/bento-user/2017-05-26#message_22209863

発生した事象

ブラウザで管理画面を開いたまま PC をスリーブさせ、数日後またその PC を起動してブラウザを開いたところ、管理画面が表示されていた(日をまたいでいるので表示されている日付は相対的に過去のもの)ので 締め切る ボタンを押した。
すると画面に表示されている日付で「正常に締め切りがされた」挙動になった。(エラーメッセージも出ずに idobata に成立メッセージが投稿された)

期待する挙動

  • ユーザとして、すでに締め切られている注文に対しては何度も成立通知メッセージが来てほしくない。なぜなら、どのメッセージが正常なのか判断がつかずに混乱するからだ。
  • 管理者として、すでに締め切られている注文を締め切ろうとしたら、すでに操作済みであることを知らせてほしい。なぜなら、もう既に締め切りをしてあることが明確にわかるので、安心できるからだ。

考えたこと

今回はふたつの要因が混ざっているため、分けて考えます。

1. すでに締め切られている注文に対して締め切り操作をした

今のコードを見ると、締め切り処理前に「既に締め切られているか」の確認はしておらず、どんな場合でも update! するようになっています。
ここでその確認をしないために今回のような二重更新処理が行われてしまっています。

2. 画面に表示されている(その画面で対象としている)日付と現在日時が異なる状態で締め切り操作をした

基本的には 1. であげた確認をすれば今回と同様のことは起こらなくなると思います。
ただ、この bento の運用フローから考えると、「クライアント側から締め切り処理時に送信される日付とサーバの現在日付が違う」という状態はないはず、という前提を挙げることができます。
(なぜなら営業日は毎日必ず成立・非成立を人力で判断するという要件だから)

そう考えると、「クライアント側から締め切り処理時に送信される日付とサーバの現在日付が違う」という場合には「あなたなにかイレギュラーなことしようとしてますよ」とエラーを出す(たとえ、送信されてきた日付の注文が何らかの理由で締め切り処理をされていなかったとしても)というふうにも作れると思います。

ただし今回起きた事象は、日付をまたがず同日内に、開きっぱなしの別ブラウザから 2 度目の 締め切る をしても起きうることなので、1 の対応を取ることがベターだと思っています。

@yucao24hours yucao24hours changed the title 締め切り前の すでに締め切られている注文に対して、何度も締め切り操作ができてしまう May 28, 2017
@yucao24hours yucao24hours self-assigned this May 28, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant