gpt4 book ai didi

ruby-on-rails - Paper Trail 的不同表名?

转载 作者:行者123 更新时间:2023-12-04 02:11:39 25 4
gpt4 key购买 nike

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

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

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

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

有什么想法吗?或者我应该只使用 Audited使用 audits 表的 gem?

最佳答案

PaperTrail 支持 custom version classes可以定义自定义表名。

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。还将其中提及的任何 versions 表重命名为您的自定义表名,例如post_versions.
  • 打开所有其他生成的迁移并将versions 表名称更改为其中的自定义表名称。不过,无需重命名这些文件。
  • 现在返回到您原来的(现在已临时重命名)create_versions 迁移文件并将其重命名回其原始名称(还原此文件的更改)。
  • 尝试运行迁移!现在应该可以了。

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

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

关于ruby-on-rails - Paper Trail 的不同表名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37557883/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com