أساسيات Active Record
أساسيات ORM
أساسيات Active Record درس مجاني في Ruby Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Ruby Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Ruby Academy 4 دروس في المجموع.
ما هو Active Record؟
إن Active Record هو طبقة ORM (موائم الكائنات والعلاقات) في Rails. وهو يربط كائنات Ruby بالصفوف الموجودة في جدول قاعدة البيانات، بحيث تتعامل مع الكائنات بدلًا من SQL الخام.
- تطابق الفئة الجدول.
- يطابق المثيل الصف.
- تطابق الخاصية العمود.
تعريف نموذج
النموذج هو فئة ترث من ApplicationRecord، الذي يرث بدوره من ActiveRecord::Base. وبحسب الاصطلاح، يرتبط نموذج User تلقائيًا بجدول users.
class User < ApplicationRecord
end
# Maps to the 'users' table
# Columns become attributes automaticallyالاصطلاح قبل الإعداد
يستخدم Active Record اصطلاحات التسمية لتقليل الإعداد الذي تكتبه:
- تأتي أسماء الفئات بصيغة المفرد وCamelCase:
User. - تأتي أسماء الجداول بصيغة الجمع وsnake_case:
users. - المفتاح الأساسي هو
idافتراضيًا.
اتبع الاصطلاحات، وسيُنجز معظم الربط تلقائيًا.
إنشاء السجلات
أنشئ الصفوف باستخدام create، أو أنشئ الكائن أولًا ثم استخدم save. تنشئ create الكائن وتحفظه باستدعاء واحد.
user = User.create(name: "Ada", email: "ada@example.com")
# Or in two steps:
other = User.new(name: "Linus")
other.email = "linus@example.com"
other.saveقراءة السجلات
اجلب السجلات باستخدام أساليب البحث:
User.find(1)باستخدام المفتاح الأساسي، ويُطلق خطأً إذا لم يُعثر على السجل.User.find_by(email: 'a@b.com')باستخدام أي عمود، ويعيد nil إذا لم يُعثر على السجل.User.allلجلب كل الصفوف.User.firstوUser.last.
user = User.find(1)
admin = User.find_by(role: "admin")
everyone = User.allتحديث السجلات
غيّر الخصائص ثم استخدم save، أو استخدم update لإسناد القيم والحفظ معًا. يعيد update القيمة true أو false وفقًا لنتيجة التحقق.
user = User.find(1)
user.update(name: "Ada Lovelace")
# Equivalent two-step form:
user.name = "Ada Lovelace"
user.saveحذف السجلات
أزل الصفوف باستخدام destroy، الذي يشغّل عمليات الاستدعاء اللاحقة والارتباطات، أو باستخدام delete، الذي ينفّذ SQL مباشرةً ويتجاوز عمليات الاستدعاء اللاحقة. يُفضّل استخدام destroy ما لم يكن لديك سبب لتجاوزها.
user = User.find(1)
user.destroy
# Bulk destroy:
User.where(active: false).destroy_allالخصائص وتتبع التغييرات
يتتبع Active Record التغييرات التي لم تُحفظ بعد. وتخبرك أساليب مثل changed? وchanges وname_was بالتغييرات غير المحفوظة قبل الحفظ. ويفيد ذلك في عمليات الاستدعاء اللاحقة والتسجيل.
user = User.find(1)
user.name = "New Name"
puts user.changed? # true
puts user.name_was # old value
puts user.changes.inspectملف schema.rb
يقرأ Active Record بنية جداولك من قاعدة البيانات، وليس من النموذج. وتنعكس البنية الحالية في db/schema.rb، الذي يُنشأ من عمليات الترحيل. ونادرًا ما تحتاج إلى تعديله يدويًا.
أين يُنفَّذ SQL؟
يحوّل Active Record استدعاءات أساليبك إلى SQL من وراء الكواليس. إذ يتحول User.find(1) إلى SELECT * FROM users WHERE id = 1 LIMIT 1. ويمكنك رؤية SQL الناتج باستخدام User.where(active: true).to_sql.
sql = User.where(active: true).to_sql
# => SELECT "users".* FROM "users" WHERE "users"."active" = TRUEلماذا يفيد ORM؟
يوفّر لك Active Record ما يلي:
- شيفرة مستقلة عن قاعدة البيانات، سواء كانت PostgreSQL أو MySQL أو SQLite.
- حماية من حقن SQL من خلال الاستعلامات المعلَّمة بالمعاملات.
- وصولًا مقروءًا وموجّهًا للكائنات إلى البيانات.
ولا تلجأ إلى SQL الخام إلا في الحالات الخاصة.
تحقق سريع
اختبر مدى فهمك لأساسيات Active Record.
مراجعة: أساسيات Active Record
لقد تعلمت أساسيات ORM:
- تطابق الفئة الجدول، ويطابق المثيل الصف.
- يتولى الاصطلاح بدلًا من الإعداد معالجة التسمية.
- عمليات CRUD هي:
createوfind/find_byوupdateوdestroy. - يُظهر تتبع التغييرات التغييرات غير المحفوظة.
- ينشئ Active Record SQL آمنًا نيابةً عنك.
بعد ذلك سندير مخطط قاعدة البيانات باستخدام عمليات الترحيل.
الأسئلة الشائعة
هل درس «أساسيات Active Record» مجاني؟
نعم — نص درس «أساسيات Active Record» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Ruby Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Ruby Academy 4 دروس في المجموع.
ماذا ستتعلم في «أساسيات Active Record»؟
أساسيات ORM تتمرن على Ruby Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Ruby Academy؟
لا تُشترط خبرة سابقة. Ruby Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «أساسيات Active Record»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Ruby Academy هذا؟
نعم. كل درس في Ruby Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- أساسيات Active Record
- عمليات الترحيل
- الارتباطات
- التحققات والاستعلامات