首先聲明:不知道我是否在這裏嘗試不可能的事情。數據結構的版本控制
我們的rails(2.3.12)應用程序正在快速成長。這個小丑已經有了> 20個模型和> 100個遷移。此應用程序的任務之一是提供一個API。我們目前正在引入一個API版本控制方案:Best practices for API versioning?。
但是,除了具有不同版本的控制器之外,我們還希望具有不同版本的模型/數據庫表。在例如API的版本爲V1.0,我們提供的方法來獲取所有汽車的JSON列表,讓我們說這樣的事情:
http://we.com/v1.0/cars/
對於這一點,我們有一個汽車模型(根據遷移)看起來像這樣:
class car
attr_accessible :maker, :country
end
現在的API的版本2,我們希望我們的API調用看起來像這樣:
http://we.com/v2.0/cars
和模型看起來像這樣:
class car
attr_accessible :make, :country_code, :country_name
end
我希望你能得到照片。我不明白的(或者還沒有正確的想法)是:
我是否必須創建兩個模型才能使用命名空間?例如。
app/models/v1.0/car.rb
app/models/v2.0/car.rb
...或者我可以以某種方式有一個尊重數據結構版本的模型? (注意:我不打算版本化我的模型實例,vestal_versions等在這裏沒有解決方案)
是否可以同時使用這兩個模型?我的意思是,在相同的數據上使用兩個版本的模型有一個聰明的方法嗎?想到像'裝飾者'或'適配器'這樣的模式,我還沒有找到任何例子。但鑑於我們有一個轉換器方法(在我們的例子中),將轉換
[:country] to [:country_code, :country_name]
反之亦然,不會工作嗎?
這可能嗎?你知道一個處理這個問題的寶石嗎?
黑盒測試API功能是給定的。我不明白這是如何解決我們維護不同版本的問題。 –