2010-06-22 86 views
0

我正在爲一個應用程序構建一個wiki系統。設計的本質是有一個文章模型,每篇文章都有許多修訂版。當顯示文章的時候,最新的版本會被提取以獲取所有相關信息。Ruby on Rails:有什麼方法可以爲wiki系統使用嵌套屬性?

這似乎是一個完美的例子,它使用accept_nested_attributes_for,以便編輯文章將代表修訂版接受更改。然而,我似乎無法找到一種方法來保留所有舊版本,並且通過在每次編輯時創建一個新版本進行更改。有什麼辦法可以做到這一點?

對於那些誰喜歡的東西不那麼抽象:

class Article 
    has_many :revisions 
    has_one :current_revision, :class_name => "Revision", :order => "created_at DESC" 
    #contains columns that are not tracked for revisions, such as the article's Url slug 
end 
class Revision 
    belongs_to :article 
    #contains basic columns like wiki article body 
end 

回答

2

你並不需要所有這些工作,看看Vestal Versions寶石。它帶來了所有您需要的版本模型。這也有一個railscast

但是如果你還是想有兩個很好的railscasts嵌套形式的工作:

  1. Nested Model Form Part 1
  2. Nested Model Form Part 2
+0

隨着維斯塔版本,如果我結束了改變版本模型中的列,這是否意味着所有現有的版本都將變得無法使用? – 2010-06-22 21:36:46

+0

對不起,但我不明白你的問題,但我希望我的答案仍然有幫助。 Vestal Versions保留了您的模型版本,每次更新模型Vestal Version都會保存舊版本,因此您可以隨時訪問它。所以他們不會無法使用 – jigfox 2010-06-22 22:24:11

+0

我只是有點擔心版本的脆弱性。如果我要爲表格添加或刪除一列,我想知道保存的版本會發生什麼。 – 2010-06-22 22:38:55

相關問題