คุณสามารถเปลี่ยน Rails Schema โดยไม่ต้องโยกย้ายได้หรือไม่?

Aug 17 2020

ฉันใช้ bcrypt สำหรับการตรวจสอบสิทธิ์ Rails API - นี่เป็นสิ่งที่เกิดขึ้นหลังจากหลายชั่วโมงในการพยายามหาวิธีทำให้ Devise ทำงานผ่าน Rails api ได้ (พยายามทำ API ด้วย React frontend เท่านั้น)

ยังไงก็ตามฉันทำมันจนกว่าจะต้องชำระหนี้ทางเทคนิค BCrypt password_digest และ Devise Hashed_password อยู่ในทางตันและดูเหมือนว่าฉันจะไม่สามารถเพิกเฉยต่อสิ่งอื่นได้ ฉันต้องการเปลี่ยนสคีมาส่วนนั้นเพื่อรองรับ bcrypt วิธีที่ดีที่สุดในการดำเนินการอย่างไร

คำตอบ

3 max Aug 17 2020 at 18:49

การแปลงฐานข้อมูลโดยไม่ใช้การโอนย้ายทำได้ง่ายเหมือนกับการรันrails dbซึ่งจะเริ่ม CLI สำหรับฐานข้อมูลของคุณและพิมพ์ SQL แต่จากนั้นคุณต้องทำขั้นตอนเหล่านั้นซ้ำในฐานข้อมูลการทดสอบ / การพัฒนา / การผลิตและตรวจสอบให้แน่ใจว่านักพัฒนาคนอื่น ๆ ที่ทำงานในโครงการนั้นทำตามขั้นตอนเหล่านั้นบนฐานข้อมูลในพื้นที่ของตนด้วย

นี่เป็นกระบวนการที่เกิดข้อผิดพลาดได้ง่ายและการแก้ปัญหาด้วยการย้ายข้อมูลนั้นอาจจะผ่านไม่ได้มากกว่าที่คุณคิด

วิธีที่ดีที่สุดในการดำเนินการนี้คืออะไร?

ทางออกที่ดีที่สุดที่จะไม่รู้เป็นความรู้

การโอนย้าย ActiveRecord เป็นเพียงภาษาเฉพาะของโดเมน (DSL) เพื่อสร้างการสืบค้น SQL และกลไกในการเรียกใช้การย้ายข้อมูลกับฐานข้อมูลที่แตกต่างกันและคอยติดตามว่าการย้ายข้อมูลใดถูกรันผ่านตารางข้อมูลเมตาในฐานข้อมูล

แม้ว่าคุณจะไม่สามารถแสดงแบบสอบถามใด ๆ ที่คุณพยายามดำเนินการผ่าน DSL แต่คุณก็ยังสามารถใช้สตริง SQL ที่กำหนดเองได้