Mam problem, że mam migrację w Railsach, która konfiguruje domyślne ustawienie dla kolumny, jak w tym przykładzie:
def self.up
add_column :column_name, :bought_at, :datetime, :default => Time.now
end
Załóżmy, że lubię porzucić te ustawienia domyślne w późniejszej migracji. Jak to zrobić za pomocą migracji szyn?
Moje obecne obejście polega na wykonaniu niestandardowej komendy sql podczas migracji szyn:
def self.up
execute 'alter table column_name alter bought_at drop default'
end
Ale nie podoba mi się to podejście, ponieważ jestem teraz zależny od tego, w jaki sposób baza danych interpretuje to polecenie. W przypadku zmiany bazy danych to zapytanie może nie działać i migracja zostałaby przerwana. Czy jest więc sposób wyrażenia cofnięcia domyślnego ustawienia kolumny w szynach?
ruby-on-rails
rails-migrations
Wulfovitch
źródło
źródło
CHARACTER VARYING
kolumn, wystarczy ustawić ją naNULL::character varying
.change_column_default(:table_name, :column_name, from: nil, to: false)
ALTER TABLE table_name ALTER COLUMN type DROP DEFAULT
, myślę, że nie muszę go ustawiaćNULL
.Wygląda na to, że postępujesz właściwie ze swoim „wykonywaniem”, jak wskazują dokumenty:
źródło
Poniższego fragmentu używam do tworzenia
NULL
kolumnNOT NULL
, ale pomijamDEFAULT
na poziomie schematu:źródło
Szyny 4
źródło