ruby on rails - أضف قيمة افتراضية لعمود من خلال الترحيل




ruby-on-rails migration (5)

كيف أقوم بإضافة قيمة افتراضية إلى عمود موجود بالفعل من خلال الترحيل؟

كل الوثائق التي يمكنني العثور عليها توضح لك كيفية القيام بذلك إذا كان العمود غير موجود بالفعل ولكن في هذه الحالة فإنه يفعل.


** القضبان 4.X + **

اعتبارًا من Rails 4 لا يمكنك إنشاء ترحيل لإضافة عمود إلى جدول له قيمة افتراضية ، الخطوات التالية تضيف عمودًا جديدًا إلى جدول موجود مع القيمة الافتراضية true أو false.

1. قم بتشغيل الترحيل من سطر الأوامر لإضافة العمود الجديد

$ rails generate migration add_columnname_to_tablename columnname:boolean

سيضيف الأمر السابق عمودًا جديدًا في جدولك.

2. قم بتعيين قيمة العمود الجديدة إلى TRUE / FALSE عن طريق تحرير ملف الترحيل الجديد الذي تم إنشاؤه.

class AddColumnnameToTablename < ActiveRecord::Migration
  def change
    add_column :table_name, :column_name, :boolean, default: false
  end
end

** 3. لإجراء التغييرات في جدول قاعدة بيانات التطبيق ، قم بتشغيل الأمر التالي في المحطة **

$ rake db:migrate

إليك كيفية القيام بذلك:

change_column :users, :admin, :boolean, :default => false

ولكن بعض قواعد البيانات ، مثل PostgreSQL ، لن تقوم بتحديث الحقل للصفوف التي تم إنشاؤها سابقًا ، لذا تأكد من تحديث الحقل manaully على الترحيل أيضًا.


بالنسبة إلى Rails 4+ ، use change_column_default

  def change
    change_column_default :table, :column, value
  end

في ما يلي رابط إلى change_column_default documentation .


نفذ - اعدم:

rails generate migration add_column_to_table column:boolean

ستنشئ هذا الترحيل:

class AddColumnToTable < ActiveRecord::Migration
  def change
    add_column :table, :column, :boolean
  end
end

قم بتعيين القيمة الافتراضية للإضافة: default => 1

add_column: table،: column،: boolean،: default => 1

يركض:

أشعل النار ديسيبل: ترحيل


change_column_default :employees, :foreign, false





migration