我目前正在为我的Rails 5应用程序设置PaperTrail,我需要版本表的自定义名称。至于基本设置:我已配置
# app/models/application_record.rb
class ApplicationRecord < ActiveRecord::Base
self.abstract_class = true
self.table_name_prefix = 'my_app_'
end
并更改了默认的PaperTrail迁移以适应此情况:
def change
create_table :my_app_foo_versions, ...
...
end
模型的定义如下:
# lib/bar/baz/foo.rb
module Bar
module Baz
class Foo < ApplicationRecord
has_paper_trail class_name: 'FooVersions'
end
end
end
# lib/bar/baz/foo_version.rb
module Bar
module Baz
class FooVersion < PaperTrail::Version
self.table_name = :foo_versions
self.sequence_name = :foo_versions_id_seq
end
end
end
此外,PaperTrail::Version
的定义如下:
# app/models/paper_trail/versions.rb
module PaperTrail
class Version < ApplicationRecord
include PaperTrail::VersionConcern
self.abstract_class = true
end
end
现在,迁移运行时没有任何错误,但是当我创建Foo
的新数据库条目时,我得到了
NameError: uninitialized constant Bar::Baz::Foo::FooVersions
我已经尝试过任何我能想到的命名组合(关于文件和类名),但我似乎无法解决这个错误。我必须更改此设置的哪一部分才能将此自定义版本表用于我的模型?