Ruby on rails 用户放弃后锁定的记录

Ruby on rails 用户放弃后锁定的记录,ruby-on-rails,Ruby On Rails,我的应用程序中有一个锁定挑战。有一张发票,在批准时间表时自动创建该发票。发票需要由员工手动调整(添加增值税代码、联系人数据等),因此他单击adapt按钮。此时,时间表将获得状态已锁定,因此无法再对时间表进行任何更改 这一切都很好,除了一种边缘情况:员工单击adapt按钮,但对发票不做任何操作。例如,它会转到另一个屏幕,忘记发票等。在这种情况下,时间表将永远处于锁定状态,而它应该被解锁 我能做些什么来解决这个问题?我目前的想法是创建一个rake任务,它以一定的间隔检查处于locked状态的时间表,

我的应用程序中有一个锁定挑战。有一张
发票
,在批准
时间表时自动创建该发票。发票需要由员工手动调整(添加增值税代码、联系人数据等),因此他单击
adapt
按钮。此时,
时间表
将获得状态
已锁定
,因此无法再对时间表进行任何更改

这一切都很好,除了一种边缘情况:员工单击
adapt
按钮,但对发票不做任何操作。例如,它会转到另一个屏幕,忘记发票等。在这种情况下,时间表将永远处于
锁定
状态,而它应该被解锁

我能做些什么来解决这个问题?我目前的想法是创建一个rake任务,它以一定的间隔检查处于
locked
状态的时间表,并在当前时间与
时间更新的时间表
之间的间隔超过一小时时删除
locked
状态


但是,也许还有另一种策略可以更好地处理这种情况?

你可以使用gmail的方法,例如(当你在完成电子邮件之前离开页面时,他会问你是否确实想离开此页面,如果是,他会丢弃邮件) 在您的情况下,您也应该这样做,并发送一个ajax请求来解锁记录
在所有情况下,您都需要执行rake任务,以处理在电源关闭或浏览器崩溃时关闭的情况。但是避免将记录锁定一整小时会更方便,除非在非常特殊的情况下,例如这些

您当前使用的策略是悲观策略,我建议使用乐观策略:

结果是,如果有人打开页面,去吃午饭,同时另一个用户更新了记录,那么当用户吃完午饭回来提交表单时,就会发生异常


下一个问题是如何处理异常?告诉用户这个问题已经解决了吗?向用户显示冲突,以便他们能够解决冲突?

谢谢您,尽管我必须决定是悲观还是乐观。。。