Jak zrzucić kolumny za pomocą migracji Rails
Jaka jest składnia upuszczania kolumny tabeli bazy danych przez migrację Rails?
16 answers
remove_column :table_name, :column_name
Na przykład:
remove_column :users, :hobby
Usunie kolumnę hobby z tabeli users.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-09 15:03:13
Dla starszych wersji Rails
ruby script/generate migration RemoveFieldNameFromTableName field_name:datatype
Dla Rails 3 i up
rails generate migration RemoveFieldNameFromTableName field_name:datatype
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-11 01:54:51
Rails 4 został zaktualizowany, więc metoda change może być użyta w migracji do upuszczania kolumny i migracja z powodzeniem zostanie wycofana. Proszę przeczytać następujące ostrzeżenie dla aplikacji Rails 3:
Rails 3 Warning
Należy pamiętać, że podczas korzystania z tego polecenia:
rails generate migration RemoveFieldNameFromTableName field_name:datatype
Wygenerowana migracja będzie wyglądać mniej więcej tak:
def up
remove_column :table_name, :field_name
end
def down
add_column :table_name, :field_name, :datatype
end
Upewnij się, że nie używasz metody change podczas usuwania kolumn z tabeli bazy danych (przykład nie chcę w pliku migracji w aplikacjach Rails 3):
def change
remove_column :table_name, :field_name
end
Metoda change w Rails 3 nie jest inteligentna, jeśli chodzi o remove_column, więc nie będziesz mógł cofnąć tej migracji.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-10 20:17:07
W aplikacji rails4 można użyć metody change również do usuwania kolumn. Trzeci param to data_type i w opcjonalnym forth możesz podać opcje. Jest ona nieco ukryta w sekcji "Dostępne transformacje" na dokumentacji .
class RemoveFieldFromTableName < ActiveRecord::Migration
def change
remove_column :table_name, :field_name, :data_type, {}
end
end
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-09 21:30:09
Są dwa dobre sposoby, aby to zrobić:
Remove_column
Możesz po prostu użyć remove_column, w następujący sposób:
remove_column :users, :first_name
Jest to w porządku, jeśli tylko trzeba dokonać jednej zmiany w schemacie.
Change_table block
Można to również zrobić za pomocą bloku change_table, w ten sposób:
change_table :users do |t|
t.remove :first_name
end
Wolę to, ponieważ uważam, że jest bardziej czytelne, i można wprowadzić kilka zmian na raz.
Oto pełna lista obsługiwanych change_table metody:
Http://apidock.com/rails/ActiveRecord/ConnectionAdapters/SchemaStatements/change_table
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-28 08:35:42
W rails 5 możesz użyć tego polecenia w terminalu:
rails generate migration remove_COLUMNNAME_from_TABLENAME COLUMNNAME:DATATYPE
Na przykład, aby usunąć kolumnę access_level (string) z użytkowników tabeli:
rails generate migration remove_access_level_from_users access_level:string
A następnie uruchom:
rake db:migrate
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-24 09:11:40
rails g migration RemoveXColumnFromY column_name:data_type
X = nazwa kolumny
Y = nazwa tabeli
EDIT
Zmieniono RemoveXColumnToY
na RemoveXColumnFromY
zgodnie z komentarzami-zapewnia większą jasność co do tego, co faktycznie robi migracja.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-13 11:01:03
Usuń kolumny dla aplikacji RAILS 5
rails g migration Remove<Anything>From<TableName> [columnName:type]
Powyższe polecenie generuje plik migracji w katalogu db/migrate
. Snippet blow jest jednym z przykładów remove column z tabeli generowanych przez Generator Rails,
class RemoveAgeFromUsers < ActiveRecord::Migration
def up
remove_column :users, :age
end
def down
add_column :users, :age, :integer
end
end
Zrobiłem również krótki przewodnik po szynach, który można znaleźć na tutaj .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-17 08:36:59
remove_column :table_name, :column_name
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-01 01:59:07
Aby usunąć kolumnę z tabeli należy wykonać migrację:
rails g migration remove_column_name_from_table_name column_name:data_type
Następnie uruchom polecenie:
rake db:migrate
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-02 09:06:50
Podaj poniżej komendę, którą sam doda do pliku migracji
rails g migration RemoveColumnFromModel
Po uruchomieniu powyższego polecenia możesz sprawdzić migrację pliku remove_column kod musi być tam dodany samodzielnie
Następnie migruj db
rake db:migrate
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-12 03:06:53
Do usunięcia kolumny z tabeli w zaledwie 3 prostych krokach w następujący sposób:
- zapisz to polecenie
rails g migration remove_column_from_table_name
Po uruchomieniu tego polecenia w terminalu jeden plik utworzony przez tę nazwę i znacznik czasu (remove_column from_table_name).
Następnie przejdź do tego pliku.
-
Wewnątrz pliku musisz napisać
remove_column :table_name, :column_name
-
W końcu przejdź do konsoli, a następnie zrób
rake db:migrate
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-06 10:48:09
remove_column
Metoda in change
pomoże Ci usunąć kolumnę z tabeli.
class RemoveColumn < ActiveRecord::Migration
def change
remove_column :table_name, :column_name, :data_type
end
end
Przejdź na ten link, aby uzyskać pełne odniesienie: http://guides.rubyonrails.org/active_record_migrations.html
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-18 00:37:29
Wygeneruj migrację, aby usunąć kolumnę tak, że jeśli jest ona migrowana (rake db:migrate
), powinna opuścić kolumnę . I powinien dodać kolumnę wstecz , Jeśli ta migracja jest rollbacked (rake db:rollback
).
Składnia:
Remove_column :table_name,: column_name
Usuwa kolumnę, ale nie dodaje kolumny po wycofaniu.
Przykład:
remove_column :users, :last_name
Zwróć uwagę na nazwę tabeli liczby mnogiej: users
The składnia:
Remove_column :table_name,: column_name,: type
Usuwa kolumnę, również dodaje kolumnę z powrotem jeśli migracja jest rollbacked.
Przykład:
remove_column :users, :last_name, :string
Szczęśliwego kodowania!Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-13 05:42:22
Przezremove_column :table_name, :column_name
w pliku migracji
Możesz usunąć kolumnę bezpośrednio w konsoli rails wpisując:ActiveRecord::Base.remove_column :table_name, :column_name
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-06 18:08:07
Zrób tak;
rails g migration RemoveColumnNameFromTables column_name:type
Tzn. rails g migration RemoveTitleFromPosts title:string
W każdym razie lepiej byłoby rozważyć przestój, ponieważ ActiveRecord buforuje kolumny bazy danych w czasie wykonywania, Więc jeśli upuścisz kolumnę, może to spowodować wyjątki do czasu ponownego uruchomienia aplikacji.
Ref: silna migracja
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-11 07:41:15