Подтвердить что ты не робот

Как установить значение по умолчанию для столбца в рельсах при создании миграции

Я новичок в модели в рельсах. Я знаю, как создать модель и как добавить к ней столбец. Теперь я хочу установить значение по умолчанию для столбца, но я не понимаю, как именно я могу это сделать.

Я создал новую модель

rails g model User

а затем добавил к нему столбец

rails generate migration AddNotificationEmailToUsers notification_email:boolean

Теперь я хочу установить значение столбца Notification default как true. Пожалуйста, расскажите мне, как написать миграцию для нее. Спасибо!

4b9b3361

Ответ 1

Вы не можете сделать это из командной строки - вам придется отредактировать файл миграции и изменить соответствующую строку на что-то вроде

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

Ответ 2

Лучший подход здесь - использовать change_column в вашей миграции. Объявляется изменение типа, но вы можете использовать его для привязки по умолчанию к существующему столбцу.

У меня был

location   :integer

в схеме, и я хотел, чтобы по умолчанию был равен нулю, поэтому я написал миграцию как таковую:

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

Это сделал трюк.

Ответ 3

Фредерик Чунг прав, вам нужно будет отредактировать файл миграции для этого. Просто небольшое обновление добавляет запятую после типа данных, прежде чем указывать значение по умолчанию.

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

Ответ 4

В настоящее время нет пути для указания значения по умолчанию, определенного через терминал в миграции рельсов.

вы можете выполнить следующие шаги, чтобы указать значение по умолчанию для столбца

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). Завершите выше сгенерированную миграцию с помощью Executing.

$ rake db:migrate