Wenn Sie datenbankspezifische Funktionen benötigen oder wollen, die ActiveRecord nicht versteht, sollten Sie zu db/structure.sql
wechseln um Ihr Schema zu verfolgen. db/structure.sql
ist so ziemlich ein Rohabbild Ihres Schemas, das mit den nativen Tools der Datenbank erstellt wurde, sodass es Trigger, CHECK-Einschränkungen, Indizes für Funktionsergebnisse und alles andere enthält.
Der Wechsel ist einfach:
- Aktualisieren Sie Ihre
config/application.rb
config.active_record.schema_format = :sql
enthalten . - Führe einen
rake db:structure:dump
durch um eine anfänglichedb/structure.sql
zu erhalten . - Löschen Sie
db/schema.rb
aus Ihrem Verzeichnisbaum und der Revisionskontrolle. - Fügen Sie
db/structure.sql
hinzu zur Revisionskontrolle. - Passen Sie Ihre Rake-Gewohnheiten an:
- Verwenden Sie
db:structure:dump
stattdb:schema:dump
- Verwenden Sie
db:structure:load
stattdb:schema:load
- Verwenden Sie
Alles andere sollte wie gewohnt funktionieren (vorausgesetzt natürlich, dass Sie bei Verstand sind und PostgreSQL für die Entwicklung, das Testen und die Produktion verwenden).
Mit dieser vorgenommenen Änderung werden Ihre Trigger in db/structure.sql
verfolgt und die Neuerstellung der Datenbank wird sie nicht verlieren.