كيفية التحقق من صحة تخفيض السعر؟
-
04-07-2019 - |
سؤال
ومن الممكن أن يكتب تخفيض السعر المحتوى مع بناء جملة غير صالح. يعني غير صالح أن BlueCloth مكتبة فشل تحليل المحتوى ويطرح استثناء. المساعد markdown
في القضبان لا يصاب أي استثناءات BlueCloth وبسبب ذلك فشل صفحة كاملة لتقديم (500 صفحة خطأ خادم يتم تقديم بدلا من ذلك).
في حالتي، ويسمح للمستخدمين لكتابة محتوى تخفيض السعر وحفظه إلى قاعدة البيانات. اذا كان شخص ما تستخدم بناء جملة غير صالح، فشلت كل محاولات تقديم المتعاقبة لهذا المحتوى (رمز الحالة 500 - خطأ خادم داخلي).
وكيف تحصل تغلب على هذه المشكلة؟ هل من الممكن أن تحقق بناء الجملة تخفيض السعر على مستوى نموذج قبل الحفظ إلى قاعدة البيانات؟
المحلول
ويجب عليك أن تكتب طريقة التحقق من صحة الخاصة بك التي كنت تهيئة الكائن BlueCloth، ومحاولة استدعاء الأسلوب to_html
اصطياد أي استثناء. إذا قبض استثناء، فشل التحقق من الصحة، وإلا فإنه يجب أن تكون على ما يرام.
في النموذج الخاص بك:
protected:
def validate
bc = BlueCloth.new(your_markdown_string_attribute)
begin
bc.to_html
rescue
errors.add(:your_markdown_string_attribute, 'has invalid markdown syntax')
end
end
نصائح أخرى
ولقد فعلت قليلا من البحوث وقرر استخدام RDiscount بدلا من ذلك من BlueCloth. RDiscount يبدو أن أسرع وأكثر موثوقية من BlueCloth.
من السهل أن دمج RDiscount في بيئة القضبان الخاصة بك. تشمل ما يلي مقصوص في environment.rb
الخاص بك وكنت على استعداد للذهاب:
begin
require "rdiscount"
BlueCloth = RDiscount
rescue LoadError
# BlueCloth is still the our fallback,
# if RDiscount is not available
require 'bluecloth'
end
و(اختبار مع القضبان 2.2.0)