我在想是否有多个用户提交表单会导致数据被覆盖。 这是按时间顺序排列的行动:
1. User 1 clicks on Edit, rails render the page that has <form> and has value {A: 1, B: 2}
2. User 2 clicks on Edit, rails render another page that has <form> and has value {A: 1, B: 2}
3. User 1 updates value A to 5 and clicks on Submit, passing to server {A: 5, B: 2}
4. Server updates to database to {A: 5, B: 2}
5. User 2 updates value B to 10 and clicks on Submit, passing to server {A: 1, B: 10}
6. Server updates to database to {A: 1, B: 10}
由于用户2的浏览器具有旧数据。当B点击提交时,字段A过去为1.用户1的更新被覆盖。
如何在rails中解决此问题?
答案 0 :(得分:1)
如果你使用rails,你应该csrf_meta_tags
创建一个唯一的密钥,让你知道表单已经提交,并且每个用户都有所不同
答案 1 :(得分:1)
如果他们要使用相同的记录,除非您查看记录,否则您肯定会因种族而遭受数据丢失。您可能需要检查记录以确保在更新过程中它没有更改。
如果要生成新记录,那么您很可能依赖于数据库为其生成唯一记录和ID /密钥。