2015-11-26 74 views
3

我正在使用PaperTrail版本模型。對於單個模型來說,這很有效。然而,我不能設法恢復一個簡單的has_many關係,儘管文檔聲明這應該工作。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

當您致電template_old.assets.count時,會導致針對實時數據庫的數據庫查詢。相反,請使用template_old.assets.length