如何更改 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。
我在我的 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。