ruby on rails - عمليات ترحيل Rails: تراجع عن الإعداد الافتراضي للعمود




ruby-on-rails rails-migrations (3)

القضبان 4

change_column :courses, :name, :string, limit: 100, null: false

لدي المشكلة ، وهي أن لديّ ترحيلًا في Rails يُنشئ إعدادًا افتراضيًا لعمود ، مثل هذا المثال:

def self.up
  add_column :column_name, :bought_at, :datetime, :default => Time.now
end

لنفترض ، أود إسقاط هذه الإعدادات الافتراضية في ترحيل لاحق ، كيف أفعل ذلك باستخدام عمليات ترحيل rails؟

الحل الحالي الخاص بي هو تنفيذ أمر SQL مخصص في ترحيل rails ، مثل هذا:

def self.up
  execute 'alter table column_name alter bought_at drop default'
end

لكنني لا أحب هذا النهج ، لأنني الآن تعتمد على كيفية تفسير قاعدة البيانات الأساسية هذا الأمر. في حالة حدوث تغيير في قاعدة البيانات ، قد لا يعمل هذا الاستعلام بعد الآن ، وسيتم تعطيل الترحيل. لذا ، هل هناك طريقة للتعبير عن التراجع عن الإعداد الافتراضي لعمود في القضبان؟


المقتطف التالي الذي أستخدمه لجعل الأعمدة NOT NULL ، ولكن تخطي DEFAULT على مستوى المخطط:

def self.up
  change_column :table, :column, :string, :null => false, :default => ""
  change_column_default(:table, :column, nil)
end

change_column_default(table_name, column_name, nil) أيضًا على إسقاط القيمة الافتراضية للعمود تمامًا. لا حاجة لاستخدام التنفيذ.





rails-migrations