繁体   English   中英

Paper Trail 的表名不同?

[英]Different table name for Paper Trail?

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

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

当运行bundle exec rails generate paper_trail:install ,我得到Migration already exists: create_versions

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

有任何想法吗? 或者我应该只使用使用audits表的审计宝石?

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

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

class Post < ActiveRecord::Base
  has_paper_trail :class_name => 'PostVersion'
end

对于失败的generate命令,我会尝试这些步骤(虽然还没有测试过):

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

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

将与被生成的文件generate命令可以看出这里在源代码中。 这些是您需要修改的文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM