как установить значение по умолчанию для столбца в 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