如何使用ActiveRecord处理Wiki的修订版?

时间:2010-01-27 23:07:10

标签: ruby-on-rails activerecord wiki revision

我有一个模型文章,has_many修订版。修订版具有各种列,用于存储有关文章的所有信息。该条还属于current_revision,它是当前选择的Revision的主键。每个修订版在创建后都不会更改。

当用户去编辑文章时,我想显示一个表单,该表单显示修订版中的所有字段,并使用current_revision中的信息预先填充。这很简单,但是当用户去保存时,我想将每个字段与current_revision中的值进行比较。如果所有字段都相同,我想什么都不做并丢弃表单帖子。但是,如果任何字段不同,我想创建一个新的修订版,而不是写入上一版本。

如何检测是否有任何字段已更改,除非手动对编辑的每个字段进行硬编码?

1 个答案:

答案 0 :(得分:2)

有用于检测Active Record中的更改的内置方法。

API有关于跟踪更改的良好文档:http://ar.rubyonrails.org/classes/ActiveRecord/Dirty.html

在您的情况下,它应该只是检测文章中哪些字段已更改,然后从中创建新修订。

有些事情:

article= Article.find(id)
article.attributes = params[:article]
if article.changed?  
  //new revision
end