我正在尝试设置paper_trail来恢复has_many关联。对于我的玩具示例,我有两个类:
class Article < ActiveRecord::Base
has_many :comments
has_paper_trail
end
和
class Comment < ActiveRecord::Base
belongs_to :article
has_paper_trail
end
我测试的代码是:
a = Article.new
Article.transaction do
a.comments << Comment.new
a.comments << Comment.new
a.save
a.touch_with_version
end
Article.transaction do
c = Comment.new
c.save
ids = a.comment_ids
ids.pop
ids.push c.id
a.comment_ids = ids
a.touch_with_version
end
previous_a = a.versions.first.next.reify(has_many: true)
pp previous_a.comments
我希望输出是ID为1和2的注释(即我创建的前两个注释)。但是,我得到的实际输出是:
╰─ ~ rails r lib/one_time/paper_trail.rb
[#<Comment:0x0055a54ae3b148
id: 3,
text: nil,
article_id: nil,
created_at: Tue, 17 May 2016 04:28:24 UTC +00:00,
updated_at: Tue, 17 May 2016 04:28:24 UTC +00:00>]
这是我做错了什么,还是PaperTrail宝石中的一个小故障?似乎我已经正确设置了所有内容,并且我的最后一行应该是将文章恢复到原始状态,并保存前两条注释。