如何使用自定义版本表而不是版本表?

时间:2018-04-26 12:29:22

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

对于我目前正在进行的项目,我需要实现对象版本控制。不幸的是,我需要保留每个对象的完整历史记录,因此像Papertrail这样的单个表解决方案很快就会变得无法管理。所以我试图使用papertrail为每个对象设置自定义版本表。我按照文档但在创建对象时遇到错误

  

Model :: UnknownAttributeError:ArticleVersion的未知属性'event'。

以下是实施的代码:

  class Article < ActiveRecord::Base
   has_paper_trail class_name: 'ArticleVersion'
  end

  class ArticleVersion < PaperTrail::Version
   self.table_name = :article_versions
  end

  module PaperTrail
   class Version < ActiveRecord::Base
     include PaperTrail::VersionConcern
     self.abstract_class = true
   end
  end

以下是文章迁移的迁移:

class CreateArticleVersions < ActiveRecord::Migration[5.0]
 def change
  create_table :article_versions do |t|
  t.string :title
  t.text :text

  t.timestamps
end
end
end

当我试图通过Article.create创建文章时(文本:'some text') 我收到了上面提到的错误。 任何人都可以帮我弄清楚我是否遗漏了任何东西。

1 个答案:

答案 0 :(得分:0)

create_table :article_versions do |t|
  t.string :title
  t.text :text
  t.timestamps
end

Model::UnknownAttributeError: unknown attribute 'event' for ArticleVersion.

ArticleVersion 模型缺少event 属性,因为article_versions 缺少{ {1}}