2012-01-31 51 views
1

在我的项目rails有一个用户的CRUD,当我在两个不同的浏览器编辑视图,更新一个用户修改值,并在其他浏览器可以更新用户不知道是否已被修改。避免多个更新与轨道相同的形式3

如何避免这种行为?与CRSF令牌的形式?

非常感谢你 问候!

回答

1

我不认为CSRF令牌是你想要的。一种方法是散列表单可以更改的属性,并将该散列呈现为隐藏字段中的表单。 (请参阅http://www.ruby-doc.org/stdlib-1.9.3/libdoc/digest/rdoc/Digest.html用于生成散列)。当提交表单并且在您更新表单中的模型属性之前,将表单提交的散列与您要更新的模型中相同属性的散列进行比较。如果它们匹配,那意味着自从表单呈现以来模型没有改变。

一个不太复杂的方法是只通过模型的updated_at时间戳来做大致相同的事情。

+0

非常感谢你jtrim,我用这个技巧来避免同时编辑。 ;) – joshka 2012-02-01 11:14:34