如何更改轨道5上的列类型

时间:2016-07-22 05:16:08

标签: ruby-on-rails sqlite rails-migrations ruby-on-rails-5

我在我的sqlite中插入了一个错误类型为“stringimage”的列。

enter image description here

如何将列类型更改为字符串?

我尝试了change_column :users, :uid, :string

def up
  change_table :users do |t|
    t.change :uid, :stringimage
  end
end
def down
  change_table :users do |t|
    t.change :uid, :string
  end
end

但它不起作用。 我尝试了很多东西,但没有一个可行,可能是因为我使用的是rails 5.

3 个答案:

答案 0 :(得分:1)

您需要在迁移中编写以下两个定义:

def up
  change_column :my_table, :my_column, :string
end

def down
  change_column :my_table, :my_column, :stringimage
end

答案 1 :(得分:0)

你可以试试这个:

change_column(table_name, column_name, type, options):使用与add_column相同的参数将列更改为其他类型。

答案 2 :(得分:0)

请注意,change_column是不可逆转的迁移。如果您尝试回滚,它将导致错误。要防止这种情况,请在迁移中修改常用的更改方法,以使用两个单独的向上和向下方法,如下所示:

class ChangeUsersUidType < ActiveRecord::Migration
  def up
    change_column :users, :uid, :string
  end

  def down
    change_column :users, :uid, :stringimage
  end
end

如果您喜欢这个答案,可以在本文中阅读更多内容:https://kolosek.com/rails-change-database-column