class ChangeTablenameFieldname < ActiveRecord::Migration[5.1]
def change
reversible do |dir|
change_table :tablename do |t|
dir.up { t.change :fieldname, :date }
dir.down { t.change :fieldname, :datetime }
end
end
end
end
82
如果要在表中更改多列,也可以使用块 .
例:
change_table :table_name do |t|
t.change :column_name, :column_type, {options}
end
class ChangeDataTypeForFieldname < ActiveRecord::Migration
def self.up
change_table :tablename do |t|
t.change :fieldname, :date
end
end
def self.down
change_table :tablename do |t|
t.change :fieldname, :datetime
end
end
end
然后运行迁移:
rake db:migrate
1
Another way to change data type using migration
step1: 您需要使用迁移删除故障数据类型字段名称
ex:
rails g migration RemoveFieldNameFromTableName field_name:data_type
这里不要忘记为您的字段指定数据类型
Step 2: 现在您可以添加具有正确数据类型的字段
ex:
rails g migration AddFieldNameToTableName field_name:data_type
7 回答
只需生成迁移:
像这样更新迁移:
最后
正如我在前面的答案中发现的那样,需要三个步骤来更改列的类型:
步骤1:
使用以下代码生成新的迁移文件:
第2步:
转到
/db/migrate
文件夹并编辑您创建的迁移文件 . 有两种不同的解决方案 .2 .
第3步:
不要忘记执行此命令:
我已经为Rails 4测试了这个解决方案,它运行良好 .
我认为这应该有效 .
使用Rails 5
从Rails Guides:
如果要在表中更改多列,也可以使用块 .
例:
有关详细信息,请参阅API documentation on the Table class .
我不知道您是否可以从命令行创建迁移来完成所有这些操作,但您可以创建新的迁移,然后编辑迁移以执行此操作 .
如果tablename是表的名称,fieldname是字段的名称,并且您希望从日期时间更改为日期,则可以编写迁移来执行此操作 .
您可以使用以下命令创建新迁移:
然后编辑迁移以使用change_table:
然后运行迁移:
Another way to change data type using migration
step1: 您需要使用迁移删除故障数据类型字段名称
ex:
这里不要忘记为您的字段指定数据类型
Step 2: 现在您可以添加具有正确数据类型的字段
ex:
就是这样,现在你的表将添加正确的数据类型字段,快乐红宝石编码!