Paper Trail 的表名称不同吗?

phi*_*oye 3 ruby-on-rails paper-trail-gem

versions是否可以为PaperTrail gem指定不同的表名称(除了) ?

在我的Rails应用程序中,我已经有一个版本模型/表,它与活动记录版本控制无关(我的应用程序让我们使用分叉“原型”,无论好坏,我使用“版本”作为这些分叉的标签) 。它在我的应用程序中非常普遍,我不想重命名它。

跑步时bundle exec rails generate paper_trail:install,我明白了Migration already exists: create_versions

基本上,我希望桌子是PaperTrailVersions以及访问路径的方法具有类似的命名空间。

有任何想法吗?或者我应该只使用使用表格的Auditedaudits gem ?

Bor*_*aMa 6

PaperTrail 支持可以定义自定义表名称的自定义版本类。

class PostVersion < PaperTrail::Version
  self.table_name = :post_versions
end

class Post < ActiveRecord::Base
  has_paper_trail :class_name => 'PostVersion'
end
Run Code Online (Sandbox Code Playgroud)

由于generate命令失败,我会尝试以下步骤(但尚未测试过):

  • 您已经有一个具有该名称的迁移,CreateVersions因为您已经有一个versions表。这就是该generate命令失败的原因 - 它无法创建同名的迁移。我认为您可以简单地临时重命名旧迁移(对于原始versions表迁移)。您只需重命名该文件文件内的类名即可。
  • 然后generate命令应该运行。它应该安装一些文件,它们的名称将打印到控制台。
  • 现在打开新生成的create_versions迁移文件,并将其以及里面的类名 from 重命名CreateVersions 为根据您的自定义版本表名称命名的名称,例如CreatePostVersions. 还将其中任何提到的表重命名versions为您的自定义表名称,例如post_versions.
  • 打开所有其他生成的迁移并将versions表名称更改为其中的自定义表名称。但无需重命名这些文件。
  • 现在返回到原始(现在暂时重命名)create_versions迁移文件并将其重命名回其原始名称(恢复对此文件的更改)。
  • 尝试运行迁移!现在应该可以了。

这些步骤可能看起来很麻烦,但它们只是暂时将旧迁移重命名为其他名称,以便生成命令可以运行。然后只需要将生成的迁移中的表名更改为新的表名即可。

可以在源代码中generate看到使用该命令生成的文件。这些是您需要修改的文件。