2014-03-12 12 views

回答

15
class YourMigration < ActiveRecord::Migration 
    def change 
    change_column :users, :login, :string, :limit => 55 
    end 
end 
+9

这似乎并不可逆没有以前的限制在迁移 –

+0

是,@ChrisBeck这种迁移是不可逆的。 –

42
class YourMigration < ActiveRecord::Migration 
    def up 
    change_column :users, :login, :string, :limit => 55 
    end 

    def down 
    change_column :users, :login, :string, :limit => 40 
    end 
end 
+0

这会破坏还是保留生产数据库中的现有值? – BKSpurgeon

+3

根据我的经验,这将保存数据,并且被认为是安全的行动。 –

+0

我不喜欢这个解决方案或下面的解决方案,因为它们可能不可逆。如果数据的登录字符串长度超过40个字符,并且您尝试回滚迁移,您将收到以下错误:ActiveRecord :: StatementInvalid:PG :: StringDataRightTruncation:错误:值类型字符变化时间太长(40) 。 –