【问题标题】:Only one user allowed to edit content at a time一次只允许一位用户编辑内容
【发布时间】:2011-05-27 14:09:14
【问题描述】:

例如,如果您想编辑 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。

【问题讨论】:

    标签: javascript ruby-on-rails database


    【解决方案1】:

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

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

    【讨论】:

    • 正确。感谢您的提醒。 :-)
    【解决方案2】:

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

    • 用户 A 开始编辑项目并持有最后修改的时间戳作为令牌
    • 用户 B 开始编辑项目,并且还持有最后修改的时间戳作为令牌
    • 用户 B 保存他们的更改。最后修改的时间戳没有变化,所以保存成功
    • 用户 A 保存他们的更改。最后修改的时间戳已更改,因此他们的保存被拒绝。可以为用户提供解决冲突的机会(如果有的话)。

    哦,就像 @Andy Waite (+1) 提到的那样,Rails 已经有了这个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-18
      • 2014-02-11
      • 1970-01-01
      相关资源
      最近更新 更多