gpt4 book ai didi

ruby-on-rails-4 - PaperTrail 检索 has_many 关联

转载 作者:行者123 更新时间:2023-12-02 03:20:27 26 4
gpt4 key购买 nike

我正在使用 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 方法。但对我来说,它似乎总是只是从当前的实时版本恢复关系。

有什么想法吗?

最佳答案

当您调用 template_old.assets.count 时,您会导致对实时数据库进行数据库查询。相反,请使用 template_old.assets.length

关于ruby-on-rails-4 - PaperTrail 检索 has_many 关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33942136/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com