0

バージョン管理に PaperTrail を使用しようとしています 関連付けが元に戻りません。私は何か間違ったことをしているに違いない。これは私のものと同様の設定です。PaperTrail の最新の master ブランチを使用しています。

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 には、ボールに色を追加したときの変更が含まれていません。「色を追加する前」の作成、更新、「色の追加後」の更新のみがあります。誰かが私が間違っていることを教えてくれますか、または例を教えてくれますか? ドキュメントの Associations セクションを読みましたが、役に立ちませんでした。

4

2 に答える 2