确保只有一个用户在Rails应用程序中编辑表单

时间:2016-09-21 20:55:59

标签: ruby-on-rails ruby-on-rails-4

目前,我有一个Rails应用程序,其编辑表单位于单独的编辑页面上。有没有办法确保没有两个用户同时访问编辑页面?或者,如果页面上当前没有其他用户,则用户只能访问编辑页面?

或者问一个更简单的问题,有没有办法获取当前页面上的用户列表?

我在Rails 4上。

2 个答案:

答案 0 :(得分:0)

我认为最好的方法是使用Redis商店(或内存中的任何内容),或者为此创建一个临时会话表。 然后你可以授权show动作来检查你想要的任何内容。

答案 1 :(得分:0)

HTTP是无状态协议。它旨在允许幂等交易。服务器不存储有关每个请求链的事务状态信息。该会话允许您缓解此设计模式,并允许服务器跟踪用户的位置。为了让您知道用户是否在页面上,您需要在每个用户所在的数据库中存储。请记住,当用户决定离开页面时,只有在向其他页面发出请求时,您的服务器才会知道它。

我假设您不需要跟踪匿名会话信息,因此您可能需要覆盖控制器操作,以确保用户已登录以保存用户所在的位置。在呈现页面之前,确保用户当前位置的计数等于呈现的页面为0.

您可以在页面上激活AJAX,在这些页面上更新用户的位置,这样您就可以确保在合理的超时时间内没有用户。如果没有AJAX,您需要考虑用户编辑信息的合理时间,并考虑非合理的时间量可能是实际数量。

没有' RAILS'可以打开以检查用户所在位置的功能,这将是您自己的情况。