как установить значение по умолчанию для столбца в Rails при создании миграции
Я новичок в моделировании в rails. Я знаю, как создать модель и как добавить столбец к ним. Теперь я хочу, чтобы установить значение по умолчанию для столбца, но я не понимаю, как именно я могу это сделать.
Я создал новую модель
rails g model User
затем добавил столбец к нему
rails generate migration AddNotificationEmailToUsers notification_email:boolean
теперь я хочу установить значение столбца уведомлений по умолчанию как true. Пожалуйста, направьте меня, как написать миграцию для того же. Спасибо!!!
4 ответов
вы не можете сделать это из командной строки - вам придется отредактировать файл миграции и изменить соответствующую строку что-то вроде
add_column :users, :notification_email, :boolean, :default => true
лучший подход здесь-использовать change_column
в вашей миграции. Он объявляется для изменения типа, но вы можете использовать его для присоединения по умолчанию к существующему столбцу.
Я
location :integer
в схеме, и я хотел по умолчанию равняться нулю, поэтому я написал миграцию как таковую:
change_column :player_states, :location, :integer, :default => 0
это сделало трюк.
Фредерик Чунг прав вам нужно будет отредактировать файл миграции для этого. Просто небольшое обновление добавьте запятую после типа данных, прежде чем указывать значение по умолчанию.
add_column :users, :notification_email, :boolean, :default => true
на данный момент нет способа указать значение по умолчанию, определенное через терминал в миграции rails.
вы можете выполнить следующие шаги, чтобы указать значение по умолчанию для столбца
1). Выполнить
$ rails generate migration AddNotificationEmailToUsers notification_email:boolean
2). Задайте для нового столбца значение по умолчанию TRUE/FALSE, отредактировав созданный файл миграции.
class AddNotificationEmailToUsers < ActiveRecord::Migration
def change
add_column :users, :notification_email, :boolean, default: true
end
end
3).Запустите выше сгенерированной миграции путем выполнения.
$ rake db:migrate