一次只允许一个用户编辑内容

时间:2011-05-27 14:09:14

标签: javascript ruby-on-rails database

例如,如果您想修改 client-site.com/pages/5 ,则可以转到 admin-site.com/pages/5/edit 。我想让一位管理员一次只能访问 admin-site.com/pages/5/edit

我计划做的是在数据库中创建“editor_id”和“editing_rights_expiration_time”列,并使用JavaScript /服务器端逻辑更新它们。有没有更好的方法来实现这个功能?

我正在使用Rails 3。

2 个答案:

答案 0 :(得分:2)

我怀疑更好的方法是使用乐观锁定:

http://railscasts.com/episodes/59-optimistic-locking

答案 1 :(得分:2)

您可能希望查看乐观锁定策略,因此请尽可能多的用户编辑页面。但是,当用户尝试保存数据时,检查令牌是否已更改并拒绝编辑。例如:

  • 用户A开始编辑该项目并将最后修改的时间戳保留为令牌
  • 用户B开始编辑该项目,并将最后修改的时间戳保留为令牌
  • 用户B保存更改。上次修改的时间戳未更改,因此保存成功
  • 用户A保存更改。上次修改的时间戳已更改,因此将拒绝其保存。可以为用户提供解决冲突的机会(如果有)。

看起来Rails已经像@Andy Waite(+1)提到的那样了。