如何更改 rails 5 上的列类型

How can I change column type on rails 5

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

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

我试过了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

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

你可以试试这个:

change_column(table_name, column_name, type, options): 使用与 add_column.

相同的参数将列更改为不同的类型

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

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

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

请注意,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