يشير value too long for type character varying(1000) بالنسبة لي إلى أنه متعلق بالملخص. هذا مفاجئ لأننا من الناحية الفنية نحد الملخصات عند 150 حرفًا، لذلك لا ينبغي أن تحدث هذه الحالة أبدًا. في البداية اعتقدت أنه خطأ في مُنشئ الملخصات الخاص بنا، ولكن بالنظر إلى كود الملخص في الدردشة رأيت هذا:
def build_excerpt
# نعرض الرابط فقط إذا كانت الرسالة بأكملها رابطًا، لأننا لا نستطيع تلخيص الروابط المميزة
return message if UrlHelper.relaxed_parse(message).is_a?(URI)
# الرسائل التي تحتوي على مرفقات فقط يتم تمثيلها بشكل أفضل باسم الملف
return uploads.first.original_filename if cooked.blank? && uploads.present?
# قد يُرجع هذا قيمة فارغة لبعض الأشياء المعقدة مثل الاقتباسات، وهذا مقبول
PrettyText.excerpt(cooked, EXCERPT_LENGTH, strip_links: true, keep_mentions: true)
end
أظهر التصحيح السريع أننا في الواقع لا نصل أبدًا إلى PrettyText.excerpt ونتوقف عند أول return. يبدو أن ??? يجعل الكود الخاص بنا يعتقد أن هذا رابط:
[1] pry(main)> UrlHelper.relaxed_parse("???\ntest").is_a?(URI)
=> true