2016-06-01 57 views
2

是否可以爲PaperTrail寶石指定不同的表名稱(versions除外)?Paper Trail的不同表格名稱?

在我的Rails應用程序中,我已經有一個版本模型/表,它與活動記錄版本控制無關(我的應用程序讓我們使用fork「原型」,好或壞我用「版本」作爲標籤對於這些叉子)。這是通過我的應用程序非常普遍,我不想重命名。

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

基本上,我希望表格爲PaperTrailVersions以及訪問路徑的方法具有相似的名稱空間。

任何想法?或者我應該只使用Audited寶石,它使用audits表格?

+0

這有幫助https://github.com/airblade/paper_trail/issues/128 –

回答

2

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表遷移)。您只需要在文件中重命名文件 classname。
  • 然後generate命令應該運行。它應該安裝幾個文件,他們的名字將被打印出來到控制檯。
  • 現在打開新生成的create_versions遷移文件,並根據您的自定義版本的表名,如CreatePostVersions內從CreateVersions將其重命名以及類名的名稱。同時將其中的versions表的任何提及重命名爲您的自定義表名稱,例如post_versions
  • 打開所有其他產生遷移,改變versions表名裏面他們自定義的表名。不需要重命名這些文件。
  • 現在回到原來的(現在暫時改名)create_versions遷移文件,並將其重命名爲其原始名稱(還原對此文件的更改)。
  • 嘗試運行遷移!應該現在的工作。

這些步驟可能看起來很麻煩,但他們只是暫時將舊遷移重命名爲其他名稱,以便生成命令可以運行。那麼你只需要改變表名生成的遷移內到新的表名。

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

+0

這個例子展示了一個特定於模型的'PostVersion',但所有模型都應該可以使用相同的自定義版本類。 –

相關問題