Rails köçünü istifadə edərək sütunları necə silmək lazımdır?

Rails miqrasiyası vasitəsilə verilənlər bazası cədvəl sütunu silmək üçün sintaksis nədir?

538
14 мая '10 в 3:02 2010-05-14 03:02 Ethan 14 may, '10 saat 03: 02-da təyin olunacaq
@ 18 cavab
 remove_column :table_name, :column_name 

Məsələn:

 remove_column :users, :hobby 

istifadəçi masasından hobbi sütunu çıxaracaqsınız.

794
03 июня '10 в 8:49 2010-06-03 08:49 Cavab Nick Hammond tərəfindən 3 İyun 'da 8:49' də verildi. 2010-06-03 08:49

Rails-in köhnə versiyaları üçün

 ruby script/generate migration RemoveFieldNameFromTableName field_name:datatype 
border=0

Rails 3 və up üçün

 rails generate migration RemoveFieldNameFromTableName field_name:datatype 
347
18 сент. Cavab prabu 18 sep verilir . 2010-09-18 21:22 '10 at 21:22 2010-09-18 21:22

Rails 4 yeniləndi, beləliklə köçmə prosesində sütunu aradan qaldırmaq üçün dəyişmə metodu istifadə edilə bilər və köçün uğurla ləğv ediləcək. Rails 3 tətbiqi üçün aşağıdakı xəbərdarlıqları oxuyun:

Rails 3 xəbərdarlıqları

Bu əmri istifadə edərkən:

 rails generate migration RemoveFieldNameFromTableName field_name:datatype 

Yaranan miqrasiya belə bir şeyə bənzəyir:

  def up remove_column :table_name, :field_name end def down add_column :table_name, :field_name, :datatype end 

Sütunların bir verilənlər bazası masasından silinməsində dəyişiklik üsulunu istifadə etməyinizə əmin olun (Rails 3 tətbiqində köç faylında istəmədiklərinizin nümunəsi):

  def change remove_column :table_name, :field_name end 

Rails 3-də dəyişiklik metodu remov_column gəldikdə ağıllı deyil, belə ki, bu köçürməni geri ala bilməzsiniz.

107
22 июля '13 в 19:12 2013-07-22 19:12 Cavab Powers tərəfindən 22 İyul 2013 günü saat 07:12 'da 2013-07-22 19:12

Rails4 tətbiqində sütunları silmək üçün düzəliş metodundan istifadə edə bilərsiniz. Üçüncü parametr data_type növüdür və isteğe bağlı olaraq parametrləri təyin edə bilərsiniz. Bu, sənədlərin "Mövcud Dönüşümler" bölməsində gizlənmişdir.

 class RemoveFieldFromTableName < ActiveRecord::Migration def change remove_column :table_name, :field_name, :data_type, {} end end 
33
10 июля '14 в 0:30 2014-07-10 00:30 Cavab Lars Schirrmeister tərəfindən 10 İyul '14 'də 0:30 2014-07-10 00:30' da verilir

Bunu etmək üçün iki yaxşı yol var:

remove_column

Siz sadəcə remove_column istifadə edə bilərsiniz, məsələn:

 remove_column :users, :first_name 

Yalnız sxeminizə bir dəyişiklik etmək lazımdır, bu normaldır.

block_table blok

Siz həmçinin change_table blokundan istifadə edə bilərsiniz, məsələn:

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

Mən bunu daha fərqli hesab etdiyim üçün seçirəm və bir dəfədən çox dəyişiklik edə bilərsiniz.

Desteklenen change_table metodlarının tam siyahısı burada:

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

21
09 апр. Cavab sona çatdı 09 apr. 2014-04-09 15:25 '14 da 15:25 2014-04-09 15:25

raylarda 5 əmrini terminalda istifadə edə bilərsiniz:

 rails generate migration remove_COLUMNNAME_from_TABLENAME COLUMNNAME:DATATYPE 

məsələn, masa istifadəçilərindən access_level (simli) sütunu çıxarmaq üçün:

 rails generate migration remove_access_level_from_users access_level:string 

və sonra çalıştırın:

 rake db:migrate 
13
24 авг. cavab ashmid 24 avqust verilir . 2016-08-24 12:11 '16 saat 12:11 'də 2016-08-24 12:11
 rails g migration RemoveXColumnFromY column_name:data_type 

X = sütun adı
Y = masa adı

CHANGE

RemoveXColumnFromY görə RemoveXColumnToY ə RemoveXColumnFromY - köçün nə barədə daha aydınlıq təmin edir.

10
06 апр. cavab verdi 06 apr. 2013-04-06 11:24 '13 at 11:24 2013-04-06 11:24

RAILS 5 tətbiqi üçün sütunları silin

 rails g migration Remove<Anything>From<TableName> [columnName:type] 

Yukarıdaki komut db/migrate dizininde bir geçiş faylı db/migrate . Dilim bumu, Rails generatoru tərəfindən yaradılan nümunə masadan çıxarılan sütunlardan biridir,

 class RemoveAgeFromUsers < ActiveRecord::Migration def up remove_column :users, :age end def down add_column :users, :age, :integer end end 

Burada da tapıla biləcək sürətli bir Rails arayışını da etdik.

10
30 сент. Cavab Xinyang Li 30 Sentyabr verilir. 2016-09-30 09:49 '16 saat 09:49 'da 2016-09-30 09:49

Aşağıdakıları edə bilərsiniz:

 remove_column :table_name, :column_name 

( Rəsmi sənədlər )

8
14 мая '10 в 3:04 2010-05-14 03:04 İordaniya tərəfindən cavab 14 May 'da saat 03:04' də verilir. 2010-05-14 03:04

Sütunu bir masadan çıxarmaq üçün aşağıdakı miqrasiya etməlisiniz:

 rails g migration remove_column_name_from_table_name column_name:data_type 

Sonra əmri çalıştırın:

 rake db:migrate 
7
17 авг. Cavab 17 avqustda Koresol tərəfindən verilir . 2017-08-17 14:15 '17 at 2:15 pm 2017-08-17 14:15

Bir sütunu aradan qaldırmaq üçün bir köç yaratmaq, belə ki köçürülmüş ( rake db:migrate ), sütunu silin . Bu miqrasiya ləğv olunduqda geri sütun əlavə etməli ( rake db:rollback ).

Sintaksis:

remove_column: table_name,: column_name, yazın

Bir sütunu silmək, həmçinin köçün ləğv edildiyi halda bir sütunu qaytarır .

Məsələn:

 remove_column :users, :last_name, :string 

Qeyd Data_type faylını əldən keçirsəniz, köç sütunu müvəffəqiyyətlə siləcək, lakin köçmədən imtina etsəniz, səhv olar.

6
15 нояб. Cavab 15 noyabrda Imran verilir. 2017-11-15 18:38 '17 'də saat 18:38' də 2017-11-15 18:38 'də

Bir sütunu yalnız 3 addımda bir masadan çıxarmaq üçün aşağıdakı adımları baxın:

  • bu əmri yazın

rails g migration remove_column_from_table_name

bu əmri bu ad və vaxt möhürü ilə yaradılan bir terminal faylında çalıştırdıktan sonra (remove_column from_table_name).

Sonra bu dosyaya gedin.

  1. faylın içərisində yazmaq lazımdır

    remove_column :table_name, :column_name

  2. Nəhayət, konsolun üzərinə get, sonra da işləsin

    rake db:migrate

5
06 апр. Cavab Karan Bamniya Apr 06 2017-04-06 12:23 '17 at 12:23 PM 2017-04-06 12:23

Aşağıdakı əmri verin, köç faylını əlavə edin

 rails g migration RemoveColumnFromModel 

Komanda yerinə yetirdikdən sonra köç faylını kontrol edə bilərsiniz. Remove_column kodu orada əlavə edilməlidir.

Sonra db ötürmək

 rake db:migrate 
5
12 февр. Cavab prash verilir 12 fevral. 2014-02-12 06:06 '14 'da 6:06' da 2014-02-12 06:06

remove_column change metodu bir sütunu bir masadan çıxarmanıza kömək edəcəkdir.

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

Tam istinad üçün bu linki izləyin: http://guides.rubyonrails.org/active_record_migrations.html

4
18 апр. Cavab Dharmesh Rupani tərəfindən verilir 18 Apr. 2016-04-18 03:37 '16 'da 3:37' də 2016-04-18 03:37 'də

Bunu buna bənzər;

rails g migration RemoveColumnNameFromTables column_name:type

Ie rails g migration RemoveTitleFromPosts title:string

Hər halda, ActiveRecord verilənlər bazası sütunlarını iş vaxtında önbelleğe alır, çünki sütunu silsəniz, bu tətbiqiniz yenidən başlanana qədər istisnalara səbəb ola bilər.

Link: Güclü Göç

1
11 сент. Nuttapon tərəfindən verilmiş cavab Sep 11 2018-09-11 10:08 '18 saat 10:08, 2018-09-11 10:08

DİQQƏT: məlumatların itirilməsi

  • Verilənlər bazasından bir sütun silinsəniz məlumatları itirirsiniz. Bunu etmək üçün aşağıdakı adımları edin:

1. Miqrasiya yaradın

  • Terminalinizdə aşağıdakı əmri çalıştırın : rails generate migration remove_fieldname_to_tablename fieldname:string
  • Misal: mənim vəziyyətimdə, accepted sütunu (boolean) quotes cədvəlindən çıxarmaq istəyirəm: rails g migration RemoveAcceptedFromQuotes accepted:boolean
  • Yenidən sənədləşmələrə baxın : bir sahəyə sahələri əlavə etmək / silmək üçün müqavilə:

Cədvəldə sahələri əlavə edən miqrasiya yaratmaq üçün xüsusi bir sintaksis etiketi var.

raylar miqrasiya yaratmaq add_fieldname_to_tablename sahə adı: string

2. Göçü yoxlayın

 # db/migrate/20190122035000_remove_accepted_from_quotes.rb class RemoveAcceptedFromQuotes < ActiveRecord::Migration[5.2] # with rails 5.2 you don't need to add a separate "up" and "down" method. def change remove_column :quotes, :accepted, :boolean end end 

3. Miqrasiyanı başlayın

rake db:migrate

.... Və sonra yarışlara gedəcəksiniz!

0
22 янв. Cavab BKSpurgeon yanvar 22 verilir 2019-01-22 07:36 '19 saat 07:36 'də 2019-01-22 07:36

Sadəcə sütunu silə bilərsiniz.

 remove_column :table_name, :column_name 

Məsələn,

 remove_column :posts, :comment 
0
04 янв. Cavab Foram Thakral tərəfindən verilir. 04 yanvar. 2019-01-04 09:16 1919, 9:16, 2019-01-04 09:16

Artıq
remove_column :table_name, :column_name
köç faylında

Sütunu doğrudan raylar konsolunda yazaraq silə bilərsiniz:
ActiveRecord::Base.remove_column :table_name, :column_name

0
06 марта '17 в 21:08 2017-03-06 21:08 Cavab Manh Cuong tərəfindən martın 06 '17 'də 21:08 2017-03-06 21:08' də verilir

haqqında digər suallar və ya bir sual