2011-12-26 22 views
19

Jestem nowym modelem w szynach. Wiem, jak utworzyć model &, jak dodać do nich kolumnę. Teraz chcę ustawić domyślną wartość kolumny, ale nie rozumiem, jak dokładnie mogę to zrobić.jak ustawić domyślną wartość kolumny w szynach podczas tworzenia migracji

I wygenerowany nowy model

rails g model User 

Następnie dodaje kolumnę do niego

rails generate migration AddNotificationEmailToUsers notification_email:boolean 

Teraz chcę, aby ustawić wartości domyślne kolumny Powiadomienie jak prawdziwe. Proszę, poprowadź mnie, jak napisać migrację dla tego samego. Dziękuję Ci!!!

Odpowiedz

44

Nie można tego zrobić z wiersza polecenia - musisz edytować plik migracji i zmienić odpowiednią linię do czegoś

add_column :users, :notification_email, :boolean, :default => true 
+0

Dzięki, że mi pomógł –

2

Frederick Cheung jest prawidłowa trzeba będzie zmieniać migrację Plik do tego. Wystarczy drobna aktualizacja dodać przecinek po typie danych przed określeniem wartości domyślnej.

add_column :users, :notification_email, :boolean, :default => true 
+0

Hey guys nie działa dla mnie jakaś migracja jak szyny g AddDefaultsToTablename migracji: TableName,: columnName: Wartość domyślna? –

+0

Nie, nie ma bezpośredniego sposobu na to. Powinno to działać w pliku migracyjnym, który zostanie wygenerowany, jaki błąd dostaniesz? – PriteshJ

13

Najlepszym rozwiązaniem jest użycie w migracji migracji change_column. Jest reklamowany, aby zmienić typ, ale można go użyć do dołączenia domyślnej do istniejącej kolumny.

miałem

location :integer 

w schemacie i chciałem domyślnie do zera, więc napisałem migrację jako takie:

change_column :player_states, :location, :integer, :default => 0 

To załatwiło sprawę.

0

W tej chwili nie ma sposobu, aby określić wartość domyślną zdefiniowaną przez terminal w migracji rails.

można wykonać poniższe czynności w celu określenia wartości domyślnej dla kolumny

1). Wykonaj

$ rails generate migration AddNotificationEmailToUsers notification_email:boolean 

2). Określ nową wartość domyślną kolumny na TRUE/FALSE, edytując nowy utworzony plik migracji.

class AddNotificationEmailToUsers < ActiveRecord::Migration 
    def change 
    add_column :users, :notification_email, :boolean, default: true 
    end 
end 

3). Uruchom powyżej wygenerowanej migracji przez wykonywanie.

$ rake db:migrate 
Powiązane problemy