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

Присвоение значения по умолчанию при создании файла миграции

rails generate migration AddRetweetsCountToTweet retweets_count:integer 

Хорошо. Я использую надстроку для создания файла миграции, который автоматически генерирует код в сгенерированном файле, чтобы добавить столбец к модели Tweet с типом целого типа данных. Теперь я хочу добавить значение по умолчанию в добавленный столбец при создании файла миграции. Это возможно? Я искал ее, но не смог найти. Ребятам нужна помощь.

4b9b3361

Ответ 1

Генератор миграции по умолчанию не обрабатывает значения по умолчанию (модификаторы столбцов поддерживаются, но не включают default или null), но вы может создать собственный генератор.

Вы также можете вручную обновить файл миграции до запуска rake db:migrate, добавив опции add_column:

add_column :tweet, :retweets_count, :integer, :null => false, :default => 0

... и прочитайте Rails API

Ответ 2

t.integer :retweets_count, :default => 0

... должен работать.

См. руководство Rails при переносе.

Ответ 3

Я попробовал t.boolean: active,: default = > 1 в файле миграции для создания всей таблицы. После выполнения этой миграции, когда я проверил db, она была сделана как null. Хотя я сказал default как "1". После этого я немного изменил файл миграции, как это, тогда он работал у меня для установки значения по умолчанию для создания файла миграции таблицы.

t.boolean: active,: null = > false,: default = > 1. Работал для меня.

Рамка для моей версии Rails 4.0.0

Ответ 4

Да, я не мог понять, как использовать "default" в команде генератора миграции, но смог указать значение по умолчанию для нового столбца строки следующим образом, изменив сгенерированный файл миграции перед применением "rake db: migrate":

class AddColumnToWidgets < ActiveRecord::Migration
  def change
    add_column :widgets, :colour, :string, default: 'red'
  end
end

Это добавляет новый столбец "цвет" в мою модель "Виджет" и устанавливает "новый" цвет по умолчанию для "новых" виджетов.