Merge pull request #1491 from internetee/1489-fix-ignored-columns-in-papertrail

Fix ignored attributes on history models
This commit is contained in:
Timo Võhmar 2020-01-27 17:24:40 +02:00 committed by GitHub
commit b572b82ae8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 30 additions and 1 deletions

View file

@ -61,7 +61,8 @@ module Versions
preceding(time + 1, true).
select("distinct on (item_id) #{ver_klass.table_name}.*").
map do |ver|
o = new(ver.object)
valid_columns = ver.item_type.constantize&.column_names
o = new(ver.object&.slice(*valid_columns))
o.version_loader = ver
ver.object_changes.to_h.each { |k, v| o.public_send("#{k}=", v[-1]) }
o

View file

@ -0,0 +1,28 @@
require 'test_helper'
class VersionsTest < ActiveSupport::TestCase
def test_if_gets_all_versions_without_error_if_ignored_column_present
@nameserver = nameservers(:shop_ns1)
@nameserver.update(hostname: 'ns99.bestnames.test')
@ignored_column_title = Nameserver.ignored_columns.first
version = NameserverVersion.last
hash = version.object
hash[@ignored_column_title] = 123456
version.update(object: hash)
assert_nothing_raised do
Nameserver.all_versions_for([@nameserver.id], Time.zone.now)
end
end
def test_if_gets_all_versions_without_error_if_no_ignored_column
@account = accounts(:cash)
@account.update(currency: 'USD')
assert_nothing_raised do
Account.all_versions_for([@account.id], Time.zone.now)
end
end
end