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. Но мне кажется, что это всегда просто восстановление отношений с текущей живой версии.

Любые идеи?


person Tom    schedule 26.11.2015    source источник


Ответы (1)


Когда вы вызываете template_old.assets.count, вы вызываете запрос базы данных к активной базе данных. Вместо этого используйте template_old.assets.length.

person Jared Beck    schedule 23.02.2016