Rails解决方案,为用户提供另一个用户当前正在编辑同一记录的警告

时间:2013-06-12 15:25:31

标签: ruby-on-rails

我想要一个gem或解决方案,以便如果用户导航到另一个用户已在编辑的记录的编辑视图,则第二个用户有一个简单的闪光警告,其他人已经在编辑此记录。我不需要对记录进行任何乐观或悲观的锁定。我正在寻找已经有解决方案的宝石。如果不是我的思路:

  • 将记录ID和用户ID的记录保存到控制器编辑操作中的“活动”表中。
  • 导航到编辑视图时检查是否有其他记录。
  • 更新记录或用户导航离开页面时,请删除活动记录。

我看到的潜在问题:

  • 如果浏览器窗口关闭,或者用户计算机已关闭(未明确导航离开页面),则更新记录不再更新。

任何示例或正确方向上的点都会很棒。

2 个答案:

答案 0 :(得分:0)

您可以生成已加载对象的md5哈希值(基于所有可编辑属性)和数据库中的对象并进行比较。如果它们不相同,则在将对象加载到内存后,有人更改了对象。

Digest::SHA2.hexdigest(<string made of all your editable attributes>)

答案 1 :(得分:0)

我会使用redis。

将编辑对象的类型和ID(“post:23322”)标记为键,值将是当前正在编辑文档的用户ID的数组(redis集)。 在密钥上设置一个到期TTL,以确保它不会过时。