rails generate migration AddRetweetsCountToTweet retweets_count:integer
Ok, używam powyższej linii, aby utworzyć plik migracji, który automatycznie generuje kod w wygenerowanym pliku, aby dodać kolumnę do modelu Tweet z liczbą całkowitą typu danych. Teraz chcę dodać wartość domyślną do dodanej kolumny podczas generowania pliku migracji. Czy to jest możliwe? Wyszukałem w Google, ale nie mogłem znaleźć. Faceci potrzebują pomocy.
ruby-on-rails
migration
kxhitiz
źródło
źródło
Odpowiedzi:
Domyślny generator migracji nie obsługuje wartości domyślnych ( modyfikatory kolumn są obsługiwane, ale nie zawierają
default
lubnull
), ale możesz utworzyć własny generator.Możesz również ręcznie zaktualizować plik migracji przed uruchomieniem
rake db:migrate
, dodając opcje doadd_column
:add_column :tweet, :retweets_count, :integer, :null => false, :default => 0
... i przeczytaj Rails API
źródło
... powinno działać.
Zobacz przewodnik Rails na temat migracji
źródło
Tak, nie widziałem też, jak używać wartości „default” w poleceniu generatora migracji, ale udało mi się określić domyślną wartość dla nowej kolumny z ciągiem znaków w następujący sposób, zmieniając wygenerowany plik migracji przed zastosowaniem polecenia „rake db: migrate”:
Spowoduje to dodanie nowej kolumny o nazwie „kolor” do mojego modelu „Widżetu” i ustawienie domyślnego „koloru” nowych widgetów na „czerwony”.
źródło
Próbowałem t.boolean: active,: default => 1 w pliku migracji, aby utworzyć całą tabelę. Po uruchomieniu tej migracji, kiedy sprawdzałem w bazie danych, ustawiono ją na null. Mimo że powiedziałem default jako „1”. Po tym nieznacznie zmieniłem plik migracji w ten sposób, a następnie zadziałało to przy ustawianiu wartości domyślnej podczas tworzenia pliku migracji tabeli.
t.boolean: active,: null => false,: default => 1. Pracował dla mnie.
Wersja mojego frameworka Railsów to 4.0.0
źródło
:default => false
?Najpierw musisz utworzyć migrację dla podstaw modelu, a następnie utworzyć kolejną migrację, aby zmodyfikować poprzednią za pomocą kolumny change_column ...
źródło