新手问题 如何用 MIGRATION,不用 SQL 修改 column 的 default 值

QueXuQ · 2012年12月20日 · 最后由 doitian 回复于 2012年12月20日 · 2365 次阅读

一开始我想着用 sql 来修改会比较方便,但是我发现 SQLite3 和 MySQL 的 SQL 有些不一样。

class ChangeProductsPriceDefault < ActiveRecord::Migration
  def up
    execute "ALTER TABLE `products` MODIFY `price` int DEFAULT 0.0"
  end

  def down
    execute "ALTER TABLE `products` MODIFY `price` int DEFAULT NULL"
  end
end

我想问问 Rails 有没有提供一些方法来修改的呢?

瞎猜了一下,感觉应该有叫做 change_column 或者 modify_column 的方法。于是在 API 文档里试着搜索,果然有:http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/SchemaStatements.html#method-i-change_column

在那个页面内浏览,发现还有更适合的 change_column_default

#1 楼 @5long 谢谢。原来有这样的 API。在 guides 里没看到,还以为没有呢。

#1 楼 @5long 一直是 change_column 还得把类型再列一遍,去掉就是 :default => nil。有这个 API 方便多了

需要 登录 后方可回复, 如果你还没有账号请 注册新账号