ruby on rails - كيفية إسقاط الأعمدة باستخدام ترحيل Rails




ruby-on-rails database (10)

أعطِ الأمر أدناه سيضيف في ملف الترحيل بمفرده

rails g migration RemoveColumnFromModel

بعد تشغيل الأمر أعلاه ، يمكنك التحقق من ملف ترحيل يجب إضافة رمز remove_column هناك من تلقاء نفسه

ثم ترحيل ديسيبل

rake db:migrate

ما هي صيغة إسقاط عمود جدول قاعدة البيانات من خلال ترحيل Rails؟


إنشاء ترحيل لإزالة عمود بحيث إذا تم تحريره ( rake db:migrate migrate) ، فيجب إسقاط العمود . ويجب إضافة عمود مرة أخرى إذا تم إرجاع هذا الترحيل ( rake db:rollback ).

بناء الجملة:

remove_column: table_name ،: column_name

يزيل العمود لكنه يفشل في إضافة عمود مرة أخرى على التراجع.

مثال:

remove_column :users, :last_name

لاحظ اسم الجدول pluralize: المستخدمين

بناء الجملة:

remove_column: table_name ،: column_name ،: type

يزيل العمود ، كما يضيف العمود مرة أخرى إذا تم إرجاع الترحيل.

مثال:

remove_column :users, :last_name, :string

الترميز سعيدة!


سوف يساعدك remove_column في أسلوب change على حذف العمود من الجدول.

class RemoveColumn < ActiveRecord::Migration
  def change
    remove_column :table_name, :column_name, :data_type
  end
end

انتقل على هذا الرابط للحصول على المرجع الكامل: http://guides.rubyonrails.org/active_record_migrations.html


عبر
remove_column :table_name, :column_name
في ملف ترحيل

يمكنك إزالة عمود مباشرةً في وحدة تحكم بالقضبان من خلال كتابة:
ActiveRecord::Base.remove_column :table_name, :column_name


في تطبيق rails4 ، من الممكن استخدام طريقة التغيير أيضًا لإزالة الأعمدة. المعلمة الثالثة هي data_type وفي الخيار الاختياري ، يمكنك إعطاء الخيارات. إنها مخفية بعض الشيء في قسم "التحويلات المتوفرة" في الوثائق .

class RemoveFieldFromTableName < ActiveRecord::Migration
  def change
    remove_column :table_name, :field_name, :data_type, {}
  end
end

لإزالة العمود من الجدول ، يجب عليك تشغيل الترحيل التالي:

rails g migration remove_column_name_from_table_name column_name:data_type

ثم قم بتشغيل الأمر:

rake db:migrate

للإصدارات القديمة من القضبان

ruby script/generate migration RemoveFieldNameFromTableName field_name:datatype

للقضبان 3 وما فوق

rails generate migration RemoveFieldNameFromTableName field_name:datatype

هناك طريقتان جيدتان للقيام بذلك:

remove_column

يمكنك ببساطة استخدام remove_column ، مثل:

remove_column :users, :first_name

هذا جيد إذا كنت تحتاج فقط إلى إجراء تغيير واحد على المخطط الخاص بك.

كتلة التغيير

يمكنك أيضًا القيام بذلك باستخدام كتلة change_table ، مثل:

change_table :users do |t|
  t.remove :first_name
end

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

فيما يلي القائمة الكاملة للأساليب المدعومة للتغيير:

http://apidock.com/rails/ActiveRecord/ConnectionAdapters/SchemaStatements/change_table


rails g migration RemoveXColumnFromY column_name:data_type

X = اسم العمود
ص = اسم الجدول

تصحيح

تغيير RemoveXColumnToY إلى RemoveXColumnFromY حسب التعليقات - يوفر المزيد من الوضوح لما تقوم به عملية الترحيل بالفعل.


remove_column :table_name, :column_name

على سبيل المثال:

remove_column :users, :hobby

سيزيل عمود الهوايات من جدول المستخدمين.







rails-migrations