0Pricing
Ruby Academy · درس

عمليات الترحيل

تطوير المخطط

عمليات الترحيل درس مجاني في 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 يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. أساسيات Active Record
  2. عمليات الترحيل
  3. الارتباطات
  4. التحققات والاستعلامات
← العودة إلى Ruby Academy