簡體   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