Heroku и настройка базы данных по умолчанию - PullRequest
0 голосов
/ 07 февраля 2012

Я только что развернул коммит в Heroku, который добавляет поле portfolio в мою таблицу photos. Я установил default => true на это. Вот сокращенный взгляд на мою schema.rb:

  create_table "photos", :force => true do |t|
    t.string   "name"
    t.string   "description"
    t.integer  "user_id"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.boolean  "portfolio",          :default => true
  end

Это работало нормально при разработке и изменило все текущие фотографии, чтобы иметь значение по умолчанию true для portfolio. Поэтому я развернул обновления для Heroku, запустил heroku rake db:migrate и heroku restart. Он перенес очень хорошо, но все изображения имеют NULL по умолчанию для portfolio. Кто-нибудь знает, как заставить Heroku изменить значение по умолчанию для этого в базе данных? Спасибо.

Ответы [ 2 ]

0 голосов
/ 07 февраля 2012

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

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

Photo.update_all :portfolio => true
0 голосов
/ 07 февраля 2012

Я исправил это, добавив Photo.update_all ["portfolio = ?", true] к моей миграции и повторной миграции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...