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

例如,如果您想编辑client-site.com/pages/5 ,请转到admin-site.com/pages/5/edit 。 我想让一个管理员一次访问admin-site.com/pages/5/edit

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

我正在使用Rails 3。

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

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

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

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

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