我有一个模型文章,has_many修订版。修订版具有各种列,用于存储有关文章的所有信息。该条还属于current_revision,它是当前选择的Revision的主键。每个修订版在创建后都不会更改。
当用户去编辑文章时,我想显示一个表单,该表单显示修订版中的所有字段,并使用current_revision中的信息预先填充。这很简单,但是当用户去保存时,我想将每个字段与current_revision中的值进行比较。如果所有字段都相同,我想什么都不做并丢弃表单帖子。但是,如果任何字段不同,我想创建一个新的修订版,而不是写入上一版本。
如何检测是否有任何字段已更改,除非手动对编辑的每个字段进行硬编码?
答案 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