如何使用带有has_many的passTrail版本控制:通过修改rails 4中的关联

时间:2015-01-09 18:19:53

标签: ruby-on-rails ruby-on-rails-4 associations has-many-through paper-trail-gem

尝试使用PaperTrail进行版本控制 我的协会没有回归。我一定做错了什么。 这是与我类似的设置。我正在使用PaperTrail的最新主分支。

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不包括更改。只有在我添加颜色&#39;之后才会创建,更新&#39;更新&#39;添加颜色&#39;。 有人能告诉我我做错了什么或者给我一个例子吗? 我已阅读文档的“关联”部分,但无济于事。

2 个答案:

答案 0 :(得分:0)

如果我正确理解文档,则意味着纸质记录能够恢复关联。

请参阅项目github页面关联章节。

答案 1 :(得分:0)

应该是ball.versions.last.reify(:has_many => true).save!reify只是向您展示我认为的先前版本。