سؤال

لقد تم تطوير التطبيقات على شبكة الإنترنت لفترة من الوقت و أنا مرتاح مع الخلية, في الواقع العديد من يمكنني استخدام بعض شكل من SQL كل يوم تقريبا.أنا أحب الجملة و "صفر مشاكل" كتابة استفسارات أو تحسين الجداول.لقد استمتعت بهذه الخلية api.

الشيء الذي يؤرقني هو روبي على القضبان يستخدم ActiveRecord و يهاجر كل شيء لذلك يمكنك استخدام وظائف الاستعلام عن قاعدة البيانات.أعتقد أن الفكرة هي لك "لا يجب أن ننظر إلى SQL مرة أخرى".ربما هذا ليس قبله (يبقيه بسيط غبي) ولكن هو ActiveRecord واجهة حقا أفضل ؟ إذا كان الأمر كذلك لماذا ؟

هو التنمية دون الحاجة إلى أي وقت مضى كتابة SQL صحية ؟ ما إذا كنت من أي وقت مضى إلى البحث عن شيء لا يعرف القضبان ؟ وأنا أعرف أن لديهم وظيفة تسمح لي أن أفعل مخصص الاستعلام.أعتقد حقا أريد أن أعرف ما يفكر الناس المزايا من استخدام ActiveRecord على الخلية و إذا كان هناك من يشعر مثلي أن هذا ربما سيكون على القضبان المجتمع ما كانت الآلة الحاسبة في الرياضيات المجتمع وبعض الناس قد نسيت كيفية القسمة المطولة.

هل كانت مفيدة؟

المحلول

أنت على حق أن يختبئ SQL وراء ActiveRecord طبقة يعني الناس قد تنسى للتحقق من SQL التي تم إنشاؤها.لقد تم عضك من قبل نفسي:في عداد المفقودين مؤشرات الكفاءة الاستعلامات, الخ.

ما ActiveRecord يسمح يجعل الامور سهلة سهلة:

Post.find(1)

مقابل

SELECT * FROM posts WHERE posts.id = 1

لك, المطور, أقل نوع ، وبالتالي تقل فرص الخطأ.

التحقق من صحة هو آخر شيء ActiveRecord يجعل من السهل.عليك أن تفعل ذلك على أي حال, إذا لم يكن لديك وسيلة سهلة للقيام بذلك ؟ مع تكرار ممل الأجزاء المستخرجة ؟

class Post < ActiveRecord::Base
  validates_presence_of :title
  validates_length_of :title, :maximum => 80
end

مقابل

if params[:post][:title].blank? then
  # complain
elsif params[:post][:title].length > 80 then
  # complain again
end

مرة أخرى ، من السهل تحديد من السهل التحقق من صحة.تريد المزيد من التصديق ؟ خط واحد إضافة إلى ActiveRecord نموذج.الملتوية رمز مع عدة شروط هي دائما من الصعب تصحيح الاختبار.لماذا لا تجعل من السهل عليك ؟

الشيء الأخير الذي أود حقا عن ActiveRecord بدلا من SQL هي رد.رد يمكن محاكاتها مع SQL المشغلات (التي تتوفر فقط في MySQL 5.0 أو أعلى) ، في حين ActiveRecord كان رد منذ الطريقة ثم العودة (لقد بدأت 0.13).

لتلخيص:

  • ActiveRecord يجعل الامور سهلة سهلة ؛
  • ActiveRecord يزيل مملة ومتكررة أجزاء ؛
  • ActiveRecord لا يمنعك من الكتابة الخاصة بك SQL (عادة لأسباب تتعلق بالأداء) ، وأخيرا ؛
  • ActiveRecord هو محمول عبر معظم محركات قاعدة بيانات ، في حين SQL في حد ذاته ليس (في بعض الأحيان).

في حال كنت أتحدث تحديدا عن الخلية, ولكن لا يزال.وجود خيار لطيفة.

نصائح أخرى

الفكرة هنا هي أن طريق وضع الخاص بك DB المنطق داخل السجلات النشطة, أنت تتعامل مع SQL البرمجية في مكان واحد بدلا من أن تنتشر في جميع أنحاء التطبيق الخاص بك.هذا يجعل من السهل على طبقات مختلفة من التطبيق الخاص بك إلى متابعة واحدة المسؤولية مبدأ (أن الجسم يجب أن يكون سبب واحد فقط للتغيير).

هنا مقال عن السجل النشط نمط.

وتجنب SQL يساعدك عندما تقرر تغيير نظام قاعدة البيانات. التجريد هو أيضا ضروري لجميع أنواع الأشياء، مثل التحقق من الصحة. أنا لا يعني أنك لا تحصل على إرسال SQL: يمكنك القيام به دائما أنه إذا كنت تشعر بالحاجة لذلك. ولكن لم يكن لديك لكتابة استعلام 5 السطر حيث كل ما تحتاجه هو user.save. انها فلسفة القضبان لتجنب كود لزوم لها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top