2015-09-18 63 views
-1

爲了在數據庫中添加空約束,我們必須修復生產應用中的一些不良數據。Ruby on Rails - 運行一次腳本的最佳方式

我知道一種方法是創建遷移並在其中運行腳本,但採用此方法時感覺不對,因爲我需要訪問模型,並且這些模型名稱可能會在應用程序的整個生命週期中發生變化,從開始到結束運行時突破遷移。

我想過一個耙子任務,但是耙子任務感覺他們意味着要多次運行。

我真的只需要一個地方來保存腳本的記錄,但在搜索答案後,我沒有看到有關將這些內容放入應用程序中的特殊文件夾的建議。

很想聽聽有關這方面的想法,以及哪種方法最有意義。

謝謝!

+0

我可能會去'bin/repair_db'之類的東西。 – Amadan

+0

您是否需要更改數據庫結構或僅更改數據? – illusionist

+0

只是數據。一次性拍攝 – user3029619

回答

1

我認爲你完全可以使用rake任務來修復不良數據。耙子任務可以一次或多次使用,取決於您的需求。您可以在使用後刪除耙子任務。 Rake任務也被廣泛用於我們的項目。

+0

是的,我並不反對使用耙子任務。我們只有很多人經常使用,我只是不想膨脹我們的任務清單。儘管謝謝你的回答!我發佈了我去的解決方案 – user3029619

0

如果你願意

  • CHDIR更改數據在production

    • SSH到您的生產環境,當前的部署目錄開放Rails Console--sandbox模式在這裏看到關於軌道控制檯詳細 http://edgeguides.rubyonrails.org/command_line.html#rails-console

    • 應用所需的更改並驗證更改,如果它是您預計

    • 如果如你預期,在每一個語句的結束或適當line-feed
    • ;鍵入記事本的所有命令是一次複製所有命令後..
    • 開放的Rails控制檯你退出控制檯後讓你回滾任何更改:正常模式並立即

    的Rails在沙盒模式的控制檯執行命令。
    而且,在沒有正確驗證的情況下更改production中的數據可能會花費您的財富。所以要小心。

  • 0

    結束了遷移,除了我跳過代碼修復數據,如果類不再存在。

    我最終選擇遷移的原因是因爲我團隊中的其他開發人員需要固定數據。

    相關問題