2015-12-21 40 views
15

我知道schema.rb文件是ruby文件,它在運行rake遷移時創建和修改,但是struct.sql又如何呢?rails structure.sql和schema.rb之間的區別是什麼

我已經在一些項目中看到schema.rb和其他結構.sql以及在一些這兩個文件中,他們在哪裏配置要創建的文件。

這兩者之間的區別究竟是什麼。

是否生成的structure.sql特定於特定的數據庫。

回答

17

主要區別在於schema.rb是數據庫的Ruby表示,它通常與數據庫無關。 structure.sql改爲數據庫的SQL表示形式,它取決於您選擇的特定數據庫。

如果您具有您需要但不能由schema.rb表示的特定數據庫功能,則只能使用該結構。例如,過去爲了在數據庫級別使用PostgreSQL JSONB字段或外鍵約束,過去有些人用schema.rb替換爲structure.sql

遷移現在支持這兩種功能,因此您不需要切換到structure.sql(在這些情況下)。

一般來說,我建議你使用schema.rb

相關問題