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.rbconfig.active_record.schema_format = :sqlenthalten . - Führe einen
rake db:structure:dumpdurch um eine anfänglichedb/structure.sqlzu erhalten . - Löschen Sie
db/schema.rbaus Ihrem Verzeichnisbaum und der Revisionskontrolle. - Fügen Sie
db/structure.sqlhinzu zur Revisionskontrolle. - Passen Sie Ihre Rake-Gewohnheiten an:
- Verwenden Sie
db:structure:dumpstattdb:schema:dump - Verwenden Sie
db:structure:loadstattdb: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.