工作中遇到一个场景:
有一个比较复杂的对某一流程设置页面,用户在这个页面的停留时间会比较长。如果当两个人同时停留在这个页面对某个流程做设置(流程的设置都通过 ajax 来完成的),很容易出现前后端数据不一致而产生 bug。
现在我的方法是:给流程 model 增加了一个字段 version,当某个人对这个流程有过操作后,after_save 里会对这个 version 加 1。并且在前端发送的 ajax 请求中都增加一个 version 字段,如果发送过来的 version 小于 db 中存放的 version,则 render 一个 dialog 提醒用户刷新 page。这个已经做好了,不过我觉得这种方式有一些 ugly。因为这里其实涉及到流程 model 的关联 model 更新的话,也需要去更新流程的 version,所以只要出现一种这样关联的 model,我的判断中就要多写一个 if else 了。
这个问题我认为可以抽象出来其实就是解决页面过期的问题,之前我 google 了一通没有找到现成的方法去解决,请假各位聚聚遇到这种情况是怎么做的?