2011-10-22 80 views
2

我是一名十多年來一直在使用RoR的PHP程序員。以下是我從PHP世界用於:Ruby on Rails中DB Schema的最佳實踐

  1. 創建像MySQL工作臺工具DB模式 - 做出領域正是我想要的大小,不浪費空間(例如VARCHAR(15),如果它是IP地址)。

  2. 使用Datamapper編寫模型,並將那些精確的字段長度和規範放在那裏,所以我的應用程序不會嘗試放入任何更大的值。

在從我已經看到在過去兩天RoR的世界,這似乎是流量建議:

  1. 使用它創建了一個遷移命令行中添加字段/架構腳本和顯然創建大的屁股字段(例如,「ip_address字符串」可能會使我在運行遷移時db中的字段varchar(255))。

  2. 在模型創建過程中進行驗證。

我在這裏錯過了什麼嗎?對於企業級應用程序,您真的想要創建高度自定義的模式,RoR世界中的流程是什麼?我是否手動寫出遷移腳本?

回答

2

腳手架是你用來快速入門的。但在運行遷移之前,您可以編輯它並添加約束和特定的列長度。

模型中指定的驗證(在Ruby代碼中)不具有與數據庫上指定的驗證/約束相同的安全級別。所以你仍然需要在數據庫中定義它們。

儘管可以在不進行遷移的情況下使用Rails,但我強烈建議不要這樣做。在某些情況下,它是無法避免的(例如使用舊數據庫時)。 使用遷移的最大優勢在於可以通過不同的階段使跨不同平臺的數據庫模式保持同步。例如。您的開發和生產數據庫。部署代碼時,遷移將注意數據庫正確遷移。

2

您可以在運行遷移之前編輯遷移腳本,以便自定義字段。

1

是的,如果您需要調整默認值,您可以編輯遷移腳本。

另外請注意,您不需要需要來使用遷移,它們在遍歷數據庫開發時是​​一種「便利」。沒有什麼說你必須使用它們。活動記錄模式不依賴於數據庫表/字段/等。被創建或定義。

例如,遷移在處理遺留數據庫時沒有用處,但仍然可以在它們周圍編寫Rails應用程序。