Paper Trail 的不同 table 名称?
Different table name for Paper Trail?
是否可以为 PaperTrail gem 指定不同的 table 名称(versions
除外)?
在我的 Rails 应用程序中,我已经有一个版本 model/table,它与活动记录版本控制无关(我的应用程序让我们使用 fork a "prototype" 更好或更糟糕的是,我使用 "version" 作为这些叉子的标签)。它在我的应用程序中非常普遍,我不想重命名它。
当运行bundle exec rails generate paper_trail:install
时,我得到Migration already exists: create_versions
。
基本上,我希望 table 是 PaperTrailVersions
以及访问路径的方法也具有类似的命名空间。
有什么想法吗?或者我应该只使用使用 audits
table 的 Audited gem?
PaperTrail 支持 custom version classes 可以定义自定义 table 名称。
class PostVersion < PaperTrail::Version
self.table_name = :post_versions
end
class Post < ActiveRecord::Base
has_paper_trail :class_name => 'PostVersion'
end
从失败的 generate
命令开始,我会尝试这些步骤(虽然还没有测试):
- 您已经有一个名为
CreateVersions
的迁移,因为您已经有一个 versions
table。这就是 generate
命令失败的原因 - 它无法创建具有相同名称的迁移。我认为您可以简单地临时重命名旧迁移(对于您原来的versions
table 迁移)。您只需将文件 和 重命名为文件内的 class 名称。
- 那么
generate
命令应该运行。它应该安装一些文件,它们的名字将被打印到控制台。
- 现在打开新生成的
create_versions
迁移文件,将里面的class名字从CreateVersions
重命名为你自定义版本的名字table姓名,如CreatePostVersions
。还要将其中提到的任何 versions
table 重命名为您自定义的 table 名称,例如post_versions
.
- 打开所有其他生成的迁移 并将
versions
table 名称更改为其中的自定义table 名称。不过,无需重命名这些文件。
- 现在回到原来的(现在暂时重命名)
create_versions
迁移文件并将其重命名回原来的名称(还原此文件的更改) .
- 尝试 运行 迁移! 现在应该可以了。
这些步骤可能看起来很繁琐,但它们只是暂时将旧迁移重命名为其他名称,以便生成命令可以 运行。然后您只需将生成的迁移中的 table 名称更改为新的 table 名称。
使用generate
命令生成的文件可以在源代码中看到here。这些是您需要修改的文件。
是否可以为 PaperTrail gem 指定不同的 table 名称(versions
除外)?
在我的 Rails 应用程序中,我已经有一个版本 model/table,它与活动记录版本控制无关(我的应用程序让我们使用 fork a "prototype" 更好或更糟糕的是,我使用 "version" 作为这些叉子的标签)。它在我的应用程序中非常普遍,我不想重命名它。
当运行bundle exec rails generate paper_trail:install
时,我得到Migration already exists: create_versions
。
基本上,我希望 table 是 PaperTrailVersions
以及访问路径的方法也具有类似的命名空间。
有什么想法吗?或者我应该只使用使用 audits
table 的 Audited gem?
PaperTrail 支持 custom version classes 可以定义自定义 table 名称。
class PostVersion < PaperTrail::Version
self.table_name = :post_versions
end
class Post < ActiveRecord::Base
has_paper_trail :class_name => 'PostVersion'
end
从失败的 generate
命令开始,我会尝试这些步骤(虽然还没有测试):
- 您已经有一个名为
CreateVersions
的迁移,因为您已经有一个versions
table。这就是generate
命令失败的原因 - 它无法创建具有相同名称的迁移。我认为您可以简单地临时重命名旧迁移(对于您原来的versions
table 迁移)。您只需将文件 和 重命名为文件内的 class 名称。 - 那么
generate
命令应该运行。它应该安装一些文件,它们的名字将被打印到控制台。 - 现在打开新生成的
create_versions
迁移文件,将里面的class名字从CreateVersions
重命名为你自定义版本的名字table姓名,如CreatePostVersions
。还要将其中提到的任何versions
table 重命名为您自定义的 table 名称,例如post_versions
. - 打开所有其他生成的迁移 并将
versions
table 名称更改为其中的自定义table 名称。不过,无需重命名这些文件。 - 现在回到原来的(现在暂时重命名)
create_versions
迁移文件并将其重命名回原来的名称(还原此文件的更改) . - 尝试 运行 迁移! 现在应该可以了。
这些步骤可能看起来很繁琐,但它们只是暂时将旧迁移重命名为其他名称,以便生成命令可以 运行。然后您只需将生成的迁移中的 table 名称更改为新的 table 名称。
使用generate
命令生成的文件可以在源代码中看到here。这些是您需要修改的文件。