Rails一致性检查记录更新

时间:2011-09-01 18:52:47

标签: ruby-on-rails ruby-on-rails-3 validation activerecord data-consistency

我将启动一个系统,我们选择了轨道,因为它涵盖了我们所有的需求。

我们需要在系统的某些方面保持数据库更新的一致性,我记得我在一些官方文档中发现rails可以自动检查记录的版本,但是我已经google了很多,我再也找不到那些页面了

问题如下:

  • 假设数据库的表中存在记录。比方说,是一个“帐户”。
  • 假设名为Bob的用户找到该记录并开始编辑它。假设用户正在将其名称从“Incomings”更改为“Sales”。
  • 假设在Bob编辑记录时,另一个名为Susan的用户找到完全相同的记录并开始编辑它。假设Susan想要将帐户名称从“Incomings”更改为“Service fee”。
  • 然后,Bob保存他的更改。
  • 在Bob保存更改后,Susan尝试保存更改。

此时,系统应通知Susan其他用户更改了记录,并且无法保存更改。

我可以手动进行此验证,但我记得这可以由Rails自动完成。我记得数据库表中唯一的需要验证的是这个验证是添加“版本”列,Rails会处理这个问题。我真的不记得该列是否必须被称为“版本”或其他东西,但事实是只有列才能启用此功能。

问题是我再也找不到那个文档了。如果有人能给我提供该文档的链接,我将感激不尽,因为“版本”专栏的重新编写是我记忆中的全部内容,我不知道还有什么我必须要处理的事情。

提前致谢。

1 个答案:

答案 0 :(得分:1)

好吧,我找到了自己问题的答案。

文档在API上,可以在这里找到:

http://api.rubyonrails.org/classes/ActiveRecord/Locking/Optimistic.html

文档非常简短!我在所需列的名称上错了。列的正确名称是'lock_version'。

感谢所有至少读过我问题的人。