Puoi semplicemente cambiare lo schema Rails senza migrazioni?

Aug 17 2020

Sto usando bcrypt per l'autenticazione API Rails - Questo è ofc dopo molte ore di tentativi di capire come far funzionare Devise tramite l'API Rails senza alcun risultato. (provando a fare API solo con il frontend React).

Comunque, l'ho fatto fino a quando non si è dovuto pagare il debito tecnico. BCrypt password_digest e Devise Hashed_password sono in una fase di stallo e non riesco a convincere uno a ignorare l'altro. Ho bisogno di modificare quella parte dello schema per adattarlo a bcrypt. Qual è il modo migliore per farlo?

Risposte

3 max Aug 17 2020 at 18:49

Eseguire le trasformazioni del database senza utilizzare le migrazioni è facile quanto eseguire, rails dbche avvierà la CLI per il database e digiterà l'SQL. Ma poi devi ripetere questi passaggi attraverso i database di test / sviluppo / produzione e assicurarti che anche gli altri sviluppatori che lavorano al progetto eseguano questi passaggi sui loro database locali.

Questo è un processo davvero soggetto a errori e in realtà risolvere il problema con le migrazioni è probabilmente molto meno insormontabile di quanto pensi.

Qual è il modo migliore per farlo?

La migliore soluzione all'ignoranza è la conoscenza .

Le migrazioni di ActiveRecord sono solo un DSL (Domain Specific Language) per creare query SQL e un meccanismo per eseguire migrazioni su database diversi e tenere sotto controllo le migrazioni eseguite tramite una tabella di metadati nel database.

Anche se non è possibile esprimere qualsiasi query che si sta tentando di eseguire tramite il DSL, è comunque possibile utilizzare qualsiasi stringa SQL arbitraria .