Jeśli potrzebujesz lub chcesz funkcji specyficznych dla bazy danych, których ActiveRecord nie rozumie, powinieneś przełączyć się na db/structure.sql
do śledzenia schematu. db/structure.sql
jest właściwie surowym zrzutem twojego schematu wykonanym przy użyciu natywnych narzędzi bazy danych, więc będzie zawierał wyzwalacze, ograniczenia CHECK, indeksy wyników funkcji i wszystko inne.
Przełączanie jest łatwe:
- Zaktualizuj plik
config/application.rb
zawieraćconfig.active_record.schema_format = :sql
. - Wykonaj
rake db:structure:dump
aby uzyskać początkowydb/structure.sql
. - Usuń
db/schema.rb
z twojego drzewa katalogów i kontroli wersji. - Dodaj
db/structure.sql
do kontroli wersji. - Dostosuj swoje nawyki dotyczące prowizji:
- Użyj
db:structure:dump
zamiastdb:schema:dump
- Użyj
db:structure:load
zamiastdb:schema:load
- Użyj
Wszystko inne powinno działać jak zwykle (zakładając oczywiście, że jesteś zdrowy na umyśle i używasz PostgreSQL do programowania, testowania i produkcji).
Po wprowadzeniu tej zmiany wyzwalacze będą śledzone w db/structure.sql
a odtworzenie bazy danych ich nie straci.