أحاول إنشاء علاقة مفتاح خارجي مع جدول المواضيع (Topics).
المشكلة هي أنها تفشل في بيئة اختبار سير عمل GitHub أثناء الاختبارات لسبب غريب للغاية، فهي تحاول الوصول إلى حقل من الجدول الأصل لم يعد موجودًا وتمت إزالته في ترحيل أساسي منذ سنوات!
الخطأ هو PG::UndefinedColumn: ERROR: column topics.off_topic_count does not exist
نعم، لأنه تم إزالته في ترحيل أساسي في عام 2018!
لقد أكدت أن هذا قد تم تشغيله بالفعل أثناء عملية الاختبار:
== 20180917024729 RemoveSuperfluousColumns: migrating =========================
== 20180917024729 RemoveSuperfluousColumns: migrated (0.0410s) ===============
أنا لا أشير بأي شكل من الأشكال إلى حقل الجدول الأصل القديم هذا بشكل صريح … يبدو أنه يقوم بإنشاء SQL بنفسه … ولكن بشكل غير مناسب للتعريف الحالي للأشياء.
== 20231119010101 CreateLocationsTopicTable: migrating ========================rake aborted!
[12035](https://github.com/paviliondev/discourse-locations/actions/runs/7039607316/job/19158951878?pr=103#step:19:12036)StandardError: An error has occurred, this and all later migrations canceled: (StandardError)
[12036](https://github.com/paviliondev/discourse-locations/actions/runs/7039607316/job/19158951878?pr=103#step:19:12037)
[12037](https://github.com/paviliondev/discourse-locations/actions/runs/7039607316/job/19158951878?pr=103#step:19:12038)PG::UndefinedColumn: ERROR: column topics.off_topic_count does not exist
[12038](https://github.com/paviliondev/discourse-locations/actions/runs/7039607316/job/19158951878?pr=103#step:19:12039)LINE 1: ...cs"."deleted_at", "topics"."highest_post_number", "topics"...
تعريف الجدول بسيط للغاية:
class CreateLocationsTopicTable < ActiveRecord::Migration[7.0]
def change
create_table :locations_topic do |t|
t.references :topic, foreign_key: true
t.float :latitude, null: false
SNIP
الجزء الأكثر غرابة هو أن هذا الترحيل يعمل في بيئة الإنتاج!
أي رؤى موضع ترحيب كبير!