Pouvez-vous simplement changer le schéma de Rails sans migrations?

Aug 17 2020

J'utilise bcrypt pour l'authentification API Rails - Ceci est ofc après de nombreuses heures à essayer de comprendre comment faire fonctionner Devise via l'API Rails en vain. (essayant de faire l'API uniquement avec l'interface React).

Quoi qu'il en soit, je l'ai fait jusqu'à ce que la dette technique soit payée. BCrypt password_digest et Devise Hashed_password sont dans une impasse et je n'arrive pas à faire en sorte que l'un ignore l'autre. Je dois modifier cette partie du schéma pour tenir compte de bcrypt. Quelle est la meilleure façon de procéder?

Réponses

3 max Aug 17 2020 at 18:49

Faire des transformations de base de données sans utiliser de migrations est aussi simple que d'exécuter rails dbce qui démarrera l'interface de ligne de commande pour votre base de données et taper le SQL. Mais ensuite, vous devez répéter ces étapes dans les bases de données de test / développement / production et vous assurer que tous les autres développeurs travaillant sur le projet exécutent également ces étapes sur leurs bases de données locales.

Il s'agit d'un processus vraiment sujet aux erreurs et résoudre le problème des migrations est probablement beaucoup moins insurmontable que vous ne le pensez.

Quelle est la meilleure façon de procéder?

La meilleure solution à l'ignorance est la connaissance .

Les migrations ActiveRecord ne sont qu'un langage DSL (Domain Specific Language) pour créer des requêtes SQL et un mécanisme pour exécuter des migrations sur différentes bases de données et garder un œil sur les migrations exécutées via une table de métadonnées dans la base de données.

Même si vous ne pouvez pas exprimer la requête que vous essayez d'exécuter via le DSL, vous pouvez toujours utiliser n'importe quelle chaîne SQL arbitraire .