问题描述
|
例如,如果您要编辑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。
解决方法
我怀疑更好的方法是使用乐观锁定:
http://railscasts.com/episodes/59-optimistic-locking
, 您可能需要考虑一种乐观的锁定策略,因此,请尽可能多的用户编辑页面。但是,当用户尝试保存数据时,请检查令牌是否已更改并拒绝编辑。例如:
用户A开始编辑该项目,并保留最后修改的时间戳记作为令牌
用户B开始编辑该项目,并且还保留了上次修改的时间戳作为令牌
用户B保存他们的更改。上次修改的时间戳未更改,因此保存成功
用户A保存他们的更改。上次修改的时间戳已更改,因此保存被拒绝。可以为用户提供解决冲突的机会(如果存在)。
哦,就像@Andy Waite(+1)提到的一样,Rails似乎已经拥有了。