0

我有一个模型文章,有_many Revisions。修订有多种列,存储有关文章的所有信息。文章还属于_to a current_revision,它是当前选择的Revision 的主键。每个修订版在创建后永远不会更改。

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

除了为修订版的每个字段手动硬编码测试外,我如何检测是否有任何字段发生更改?

4

1 回答 1

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
于 2010-01-27T23:24:41.820 回答