簡體   English   中英

Rails 如何對模型進行版本控制?

[英]Rails how to version the models?

我已經使用 rails 5 和 ruby​​ 2.3 創建了 rails 應用程序。
我想在一些模型文件中添加一些更改並將其另存為新應用程序。 我希望兩個在生產中運行這兩個應用程序作為兩個類似的應用程序。 我知道如何使用命名空間對控制器進行版本控制,但我沒有得到版本 Rails 模型的解決方案。

您是說要在不同的命名空間(例如 /v1/ 和 /v2/)下在生產中運行應用程序的兩個副本,它們共享相同的數據庫嗎?

沒有簡單的方法,因為這不是一個好主意。 每次更改為一個應用程序時,您都必須記住同時更改兩個應用程序 - 如果將來添加更多版本,情況會更糟。

如果可能,您應該共享一個代碼庫並將任何版本控制邏輯放在訪問模型的控制器中。 您的控制器可以檢查用於命中它的路由(/v1/ 或 /v2/)並做出相應的響應。

為了在代碼的兩個版本之間共享一個數據庫,您需要確保對數據庫架構所做的任何更改都是向后和向前兼容的,這意味着您只能添加新表或列(永遠不要重命名或刪除)。

如果您不需要應用的兩個版本共享同一個數據庫,您可以為新版本提供自己的數據庫副本( database: my_schema_v2 in config/database.yml )。

或者您可以為模型的 v2 指定自己的表名:

class Product < ApplicationRecord
  self.table_name = "products_v2"
end

但同樣,這意味着產品不會在您的代碼的新舊版本之間共享。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM