Bisakah Anda mengubah Skema Rails tanpa Migrasi?

Aug 17 2020

Saya menggunakan bcrypt untuk otentikasi API Rails - Ini sering terjadi setelah berjam-jam mencoba mencari tahu bagaimana membuat Devise bekerja melalui api Rails tetapi tidak berhasil. (mencoba melakukan API hanya dengan React frontend).

Bagaimanapun, saya berhasil sampai hutang teknis harus dibayar. BCrypt password_digest dan Devise Hashed_password menemui jalan buntu dan saya tidak bisa membiarkan yang satu mengabaikan yang lain. Saya perlu mengubah bagian skema itu untuk mengakomodasi bcrypt. Apa cara terbaik untuk melakukan ini?

Jawaban

3 max Aug 17 2020 at 18:49

Melakukan transformasi database tanpa menggunakan migrasi semudah menjalankan rails dbyang akan memulai CLI untuk database Anda dan mengetik SQL. Namun, Anda harus mengulangi langkah-langkah tersebut di database pengujian / pengembangan / produksi dan memastikan developer lain yang mengerjakan proyek juga melakukan langkah-langkah tersebut di database lokal mereka.

Ini adalah proses yang benar-benar rawan kesalahan dan sebenarnya menyelesaikan masalah dengan migrasi mungkin jauh lebih tidak dapat diatasi daripada yang Anda pikirkan.

Apa cara terbaik untuk melakukannya?

Solusi terbaik untuk ketidaktahuan adalah pengetahuan .

Migrasi ActiveRecord hanyalah Domain Specific Language (DSL) untuk membuat kueri SQL dan mekanisme untuk menjalankan migrasi terhadap database yang berbeda dan mengawasi migrasi mana yang telah dijalankan melalui tabel metadata di database.

Bahkan jika Anda tidak dapat mengungkapkan kueri apa pun yang Anda coba lakukan melalui DSL, Anda masih dapat menggunakan string SQL sembarang .