مرجع سريع

ورقة غش ترحيلات قواعد بيانات Rails

دليل مرجعي سريع لترحيلات قواعد بيانات Rails: إنشاء الجداول، أنواع الأعمدة، المفاتيح الخارجية، الفهارس المركبة، التغييرات القابلة للعكس ومهام rake.

· تاريخ النشر

تتيح لك ترحيلات Active Record ترقية مخطط قاعدة البيانات بمرور الوقت باستخدام لغة Ruby بدلاً من كتابة استعلامات SQL DDL يدوياً.

أوامر التوليد للترحيلات (CLI Generators)

# إنشاء ترحيل لجدول جديد
bin/rails g migration CreateArticles title:string body:text published:boolean

# إنشاء ترحيل لإضافة عمود
bin/rails g migration AddViewsToArticles views:integer

# إنشاء جدول ربط (Join Table)
bin/rails g migration CreateJoinTableUsersProjects users projects

# تشغيل الترحيلات المعلقة
bin/rails db:migrate

# التراجع عن آخر خطوة ترحيل
bin/rails db:rollback STEP=1

إنشاء الجداول (create_table)

class CreateUsers < ActiveRecord::Migration[7.1]
  def change
    create_table :users do |t|
      t.string :name, null: false
      t.string :email, index: { unique: true }
      t.text :bio
      t.integer :login_count, default: 0
      t.decimal :balance, precision: 10, scale: 2
      t.boolean :active, default: true, null: false
      t.jsonb :preferences, default: {}

      # مفتاح خارجي
      t.references :organization, null: false, foreign_key: true

      t.timestamps # حقول timestamps (created_at و updated_at)
    end
  end
end

تعديل الأعمدة والجداول

class AlterArticles < ActiveRecord::Migration[7.1]
  def change
    add_column :articles, :status, :string, default: "draft"
    remove_column :articles, :legacy_field, :string

    change_column_null :articles, :title, false
    change_column_default :articles, :views, from: nil, to: 0

    rename_column :articles, :author, :writer
    add_index :articles, [:status, :created_at]
  end
end

ترحيلات قابلة للعكس (Reversible)

def change
  reversible do |dir|
    dir.up do
      execute "CREATE EXTENSION IF NOT EXISTS citext;"
    end
    dir.down do
      execute "DROP EXTENSION IF EXISTS citext;"
    end
  end
end

مراجع

موضوعات ذات صلة