2010-01-27 20 views
0

我有一個模型文章,has_many修訂。修訂有各種各樣的專欄存儲關於文章的所有信息。該條還屬於current_revision,它是當前選擇的修訂的主鍵。每個版本在創建後都不會更改。如何使用ActiveRecord處理Wiki的修訂?

當用戶去編輯文章時,我想要顯示一個表格,顯示修訂中的所有字段,並預先填充來自current_revision的信息。這很簡單,但當用戶去保存時,我想比較每個字段與current_revision中的值。如果所有字段都是相同的,我不想做任何事情並丟棄表單。但是,如果任何字段不同,我想創建一個新的修訂版而不是寫入以前的版本。

如何檢測是否有任何字段發生了變化,除了手動硬編碼修訂的每個字段的測試?

回答

2

內置了檢測活動記錄變化的方法。

該API對跟蹤更改有很好的文檔:http://ar.rubyonrails.org/classes/ActiveRecord/Dirty.html

在你的情況下,它應該只是一個檢測文章中哪些字段已經改變,然後從中創建一個新版本的問題。

東西線沿線的:

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

謝謝,我不熟悉這些方法。 是否有檢測某些字段沒有被提交的好方法(例如,表單有一個「Has extended info」複選框,並相應地顯示/刪除行),並使用params中缺少這些字段將這些字段設置爲零? – 2010-01-27 23:56:53