我正在使用PaperTrail
来修改模型。对于单个模型,这非常有效。但是我无法恢复简单的has_many关系,尽管文档声明这应该有效。
我有两个简单的模型:
class Template < ActiveRecord::Base
has_many :assets, dependent: :destroy
has_paper_trail
#also has a title
end
class Asset < ActiveRecord::Base
belongs_to :template
has_paper_trail
has_attached_file :file, :path => ':class/:id/:filename.:extension'
do_not_validate_attachment_file_type :file
end
这是我用来测试版本控制的过程。
template = Template.create
template.title = 'initial'
template.assets.create()
template.save
title1 = template.title #initial
count1 = template.assets.count #1
template.title = 'v2'
template.assets.create()
template.save
title2 = template.title #v2
count2 = template.assets.count #2
template_old = template.versions.last.reify(:has_many => true)
title3 = template_old.title #initial
count3 = template_old.assets.count #2, should be 1
template.title = 'v3'
template.assets.last.destroy()
template.save
title4 = template.title #v3
count4 = template.assets.count #1
template_old = template.versions.last.reify(:has_many => true)
title5 = template_old.title #v2
count5 = template_old.assets.count #1, should be 2
我已将此跟踪到version_concern.rb reify_has_many_directly方法。但对我来说,似乎总是只是恢复当前现场版本的关系。
有什么想法吗?
答案 0 :(得分:0)
当您调用template_old.assets.count
时,会对实时数据库进行数据库查询。相反,请使用template_old.assets.length
。