عمليات الترحيل
تطوير المخطط
عمليات الترحيل درس مجاني في Ruby Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Ruby Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Ruby Academy 4 دروس في المجموع.
ما هو الترحيل؟
إن الترحيل هو ملف Ruby ذي إصدار يصف تغييرًا في مخطط قاعدة البيانات، مثل إنشاء جدول أو إضافة عمود.
- عمليات الترحيل شيفرة، لذا تُحفظ في نظام التحكم في الإصدارات.
- يطبّق جميع أفراد الفريق التغييرات نفسها بالترتيب نفسه.
- لا تعدّل قاعدة البيانات يدويًا أبدًا.
إنشاء عملية ترحيل
ينشئ Rails ملفات الترحيل نيابةً عنك. فعلى سبيل المثال، ينشئ rails generate migration CreateUsers ملفًا يحمل طابعًا زمنيًا في db/migrate/. ويحدد الطابع الزمني ترتيب تشغيل عمليات الترحيل.
إنشاء جدول
تعرّف عملية الترحيل أسلوب change. ينشئ create_table جدولًا، ويضيف t.timestamps تلقائيًا العمودين created_at وupdated_at.
class CreateUsers < ActiveRecord::Migration[7.1]
def change
create_table :users do |t|
t.string :name
t.string :email
t.timestamps
end
end
endأنواع الأعمدة
تطابق أنواع الأعمدة الشائعة أنواعًا في قاعدة البيانات:
stringللنصوص القصيرة.textللنصوص الطويلة.integerوfloatوdecimalللأعداد.booleanللقيم الصحيحة والخاطئة.datetimeوdateلقيم الوقت.
create_table :products do |t|
t.string :title
t.text :description
t.decimal :price
t.boolean :active
t.timestamps
endتشغيل عمليات الترحيل
يطبّق rails db:migrate جميع عمليات الترحيل المعلّقة ويحدّث schema.rb. ويسجّل Rails عمليات الترحيل التي شُغّلت في جدول schema_migrations، بحيث تُشغّل كل واحدة منها مرة واحدة فقط.
إضافة عمود
لتوسيع جدول موجود، أنشئ عملية ترحيل واستخدم add_column. وتحدد الجدول واسم العمود ونوعه وخياراته.
class AddAgeToUsers < ActiveRecord::Migration[7.1]
def change
add_column :users, :age, :integer, default: 0
end
endالتراجع
يلغي rails db:rollback آخر عملية ترحيل. ويعكس Rails أسلوب change تلقائيًا عندما تكون العمليات قابلة للعكس، مثل add_column أو create_table.
التغييرات غير القابلة للعكس
لا يمكن عكس بعض العمليات تلقائيًا، مثل تشغيل SQL خام أو إزالة عمود يحتوي على بيانات. وفي هذه الحالات، عرّف أسلوبي up وdown صراحةً حتى يعرف Rails كيفية التراجع عن التغيير.
class ChangeData < ActiveRecord::Migration[7.1]
def up
execute "UPDATE users SET active = TRUE"
end
def down
execute "UPDATE users SET active = FALSE"
end
endالفهارس
أضف فهرسًا لتسريع عمليات البحث في عمود تستعلم عنه كثيرًا، مثل مفتاح خارجي أو بريد إلكتروني يُستخدم لتسجيل الدخول. واستخدم unique: true لفرض التفرد أيضًا على مستوى قاعدة البيانات.
class AddIndexToUsersEmail < ActiveRecord::Migration[7.1]
def change
add_index :users, :email, unique: true
end
endعمليات الترحيل مقابل schema.rb
تمثل عمليات الترحيل سجل التغييرات، بينما يمثل schema.rb اللقطة الحالية. ويمكن للمطورين الجدد تشغيل rails db:schema:load لبناء قاعدة البيانات فورًا من اللقطة، بدلًا من إعادة تشغيل كل عملية ترحيل.
أفضل الممارسات
حافظ على أمان عمليات الترحيل:
- لا تعدّل أبدًا عملية ترحيل شُغّلت في بيئات مشتركة؛ اكتب عملية ترحيل جديدة.
- اجعل كل عملية ترحيل مخصصة لتغيير واحد.
- أضف قيودًا على مستوى قاعدة البيانات، مثل null: false والفهارس، لضمان سلامة البيانات.
تحقق سريع
اختبر مدى فهمك لعمليات الترحيل.
مراجعة: عمليات الترحيل
لقد تعلمت كيفية تطوير المخطط بأمان:
- عمليات الترحيل هي تغييرات مُصدرة في المخطط وملتزم بها في نظام التحكم في الإصدارات.
- تشكّل
create_tableوadd_columnوadd_indexالجداول. - يطبّق
db:migrateالتغييرات، ويعكسهاdb:rollback. - استخدم
up/downللتغييرات غير القابلة للعكس. - يمثل
schema.rbاللقطة الحالية.
بعد ذلك سنربط النماذج ببعضها باستخدام الارتباطات.
الأسئلة الشائعة
هل درس «عمليات الترحيل» مجاني؟
نعم — نص درس «عمليات الترحيل» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Ruby Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Ruby Academy 4 دروس في المجموع.
ماذا ستتعلم في «عمليات الترحيل»؟
تطوير المخطط تتمرن على Ruby Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Ruby Academy؟
لا تُشترط خبرة سابقة. Ruby Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «عمليات الترحيل»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Ruby Academy هذا؟
نعم. كل درس في Ruby Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- أساسيات Active Record
- عمليات الترحيل
- الارتباطات
- التحققات والاستعلامات