2015-12-21 35 views
15

Sono consapevole che il file schema.rb è un file ruby ​​e viene creato e modificato quando viene eseguita una migrazione rake, ma per quanto riguarda structure.sql.Qual è la differenza tra rails structure.sql e schema.rb

Ho visto in alcuni progetti schema.rb e in altri structure.sql e in alcuni entrambi i file, dove configurano quale file creare.

Qual è esattamente la differenza tra i due.

Is structure.sql generato è specifico per un determinato DB.

risposta

17

La differenza principale è che schema.rb è una rappresentazione Ruby del database ed è generalmente indipendente dal database. structure.sql invece è una rappresentazione SQL del database e dipende dal database specifico selezionato.

Si utilizza la struttura solo se si dispone di specifiche funzionalità del database necessarie e che non possono essere rappresentate dallo schema.rb. Ad esempio, in passato alcune persone hanno sostituito schema.rb con structure.sql per utilizzare campi JSONB PostgreSQL o vincoli di chiave esterna a livello di database.

Entrambe le funzionalità sono ora supportate nelle migrazioni, pertanto non è più necessario passare a structure.sql (in questi casi).

In generale, suggerisco di utilizzare schema.rb.