Rails迁移更改列

我们有script/generate migration add_fieldname_to_tablename fieldname:datatype语法,用于向模型添加新列。

在同一行上,我们是否有脚本/生成以更改列的数据类型? 或者我应该直接将SQL写入我的vanilla迁移中?

我想将datetime date的列更改为date


我认为这应该工作。

change_column :table_name, :column_name, :date

如果您在表格中有多列更改,也可以使用块。

例:

change_table :table_name do |t|
  t.change :column_name, :column_type, {options}
end

有关更多详细信息,请参阅Table类中的API文档。


我不知道您是否可以从命令行创建迁移来执行所有这些操作,但是您可以创建新的迁移,然后编辑迁移以执行此操作。

如果tablename是您的表的名称,fieldname是您的字段的名称,并且您希望从datetime更改为date,则可以编写迁移来执行此操作。

您可以创建一个新的迁移:

rails g migration change_data_type_for_fieldname

然后编辑迁移以使用change_table:

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
链接地址: http://www.djcxy.com/p/47177.html

上一篇: Rails migration for change column

下一篇: How do I make a column unique and index it in a Ruby on Rails migration?