迁移:将列从整数更改为字符串

时间:2011-07-26 17:40:39

标签: ruby-on-rails

有人可以告诉我如何编辑以下迁移以将: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 个答案:

答案 0 :(得分:24)

我猜你已经迁移了你正在展示的那个,所以要创建另一个你要放的那个:

change_column :contact_infos, :phone, :string

答案 1 :(得分:2)

我已经为此添加了一些解释。我们需要生成一个新的迁移

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,即可看到我们想要的更改。