在ActiveRecord table_name_prefix

时间:2017-04-05 10:57:54

标签: ruby-on-rails ruby activerecord paper-trail-gem

我目前正在为我的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

我已经尝试过任何我能想到的命名组合(关于文件和类名),但我似乎无法解决这个错误。我必须更改此设置的哪一部分才能将此自定义版本表用于我的模型?

0 个答案:

没有答案