0

試圖使用PaperTrail進行版本控制 我的關聯沒有恢復。我一定做錯了什麼。 下面是我的一個類似的設置。我正在使用PaperTrail的最新主分支。如何使用PaperTrail版本控制與has_many:通過在軌道中的Reify關聯4

class Ball < ActiveRecord::Base 
    has_many :ball_colors 
    has_many :colors, through: :ball_colors 
    has_paper_trail 
end 

class BallColor < ActiveRecord::Base 
    belongs_to :ball 
    belongs_to :color 
    has_paper_trail 
end 

class Color < ActiveRecord::Base 
    has_paper_trail 
    has_many :ball_colors 
    has_many :balls, through: :ball_colors 
end 

這就是我正在做的。

ball = Ball.create() 
ball.name = 'Before I add color' 
ball.save 

ball.colors << Color.create(name: 'blue') 
ball.save #although this is unnecessary i think 

ball.name = 'After adding color' 
ball.save 

b = ball.versions.last.reify(:has_many => true) 
b.save 

b.reload 
b.name #=> 'Before I add color' 
b.colors #=> [Blue] 

b.colors應該是空的。 此外,ball.versions不包括當我給球添加顏色時的變化。只有'添加顏色之前'的創建,更新,'添加顏色後更新'。 有人可以告訴我我做錯了什麼或指向我的例子嗎? 我讀過文檔的關聯部分,但無濟於事。

回答

0

如果我正確理解文檔,這意味着紙張痕跡能夠恢復關聯。

查看項目github頁面關聯章節。

0

它應該是ball.versions.last.reify(:has_many => true).save!reify只是給你看我以前的版本。

+0

我不能評論其他人的東西,但在另一張紙條上,如果有人知道如何通過'驗證:模型,長度:{最小:1}來表示has_many has_many'那太棒了。該記錄可以在沒有驗證的情況下正確地恢復關聯,但通過驗證,它不會保存對驗證失敗的抱怨。 – Kei 2015-07-23 16:44:20