Миграции: изменить столбец с целого на строку - PullRequest
11 голосов
/ 26 июля 2011

Может кто-нибудь показать мне, как отредактировать следующую миграцию, чтобы изменить :phone целое число на строку?

class CreateContactInfos < ActiveRecord::Migration
  def change
    create_table :contact_infos do |t|
      t.integer :phone
      t.string :facebook
      t.references :user

      t.timestamps 
    end
    add_index :contact_infos, :user_id
  end
end

Заранее спасибо!

Ответы [ 2 ]

24 голосов
/ 26 июля 2011

Полагаю, вы уже перенесли ту, которую показывали, поэтому создайте другую, в которую вы поместите:

change_column :contact_infos, :phone, :string
2 голосов
/ 06 октября 2017

Я добавил еще одно объяснение этому. Нам нужно сгенерировать новую миграцию

rails g migration change_phone_to_be_string_in_contact_infos

Если мы откроем миграцию, мы должны увидеть что-то вроде этого

class ChangePhoneToBeStringInContactInfos < ActiveRecord::Migration[5.0]
 def change
 end
end

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

Как видите, метод изменения пустует. Нам нужно вручную добавить код здесь.

class ChangePhoneToBeStringInContactInfos < ActiveRecord::Migration[5.0]
 def change
  change_column :customers, :phone, :string
 end
end

После сохранения этого файла просто выполните rake db: migrate, чтобы увидеть изменения, которые мы хотим.

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