0

我正在向我的 rails 应用程序的数据库添加一个新的迁移,其中我正在向一个新的应用程序添加列。某些列具有默认值。我也想为一些现有的列添加默认值。我的代码目前如下所示:

class AddStuffToTable < ActiveRecord::Migration
  def change
    add_column :table, :column4, :string
    add_column :table, :column5, :boolean, default: false
    add_default_to_column :table, :column1, default: 0
    add_default_to_column :table, :column2, default: 5.8
  end
end

我知道add_default_to_column不是正确的语法。正确的语法/方法名称是什么?此外,对于整数/小数列,以上是添加默认数字的正确方法(我的意思是我是否需要除数字本身之外的任何内容,例如字符串的“”等)

4

4 回答 4

0

根据ActiveRecord::Migration 上的 rails api,您可以使用以下方法:

change_column(table_name, column_name, type, options)

所以在你的情况下,这将是:

change_column(:table, :column1, :integer, default: 0)
change_column(:table, :column2, :float, default: 5.8)

这应该将您的第一列更改为默认值为 0 的整数,并将第二列更改为默认值为 5.8 的浮点数。

于 2013-05-03T16:04:28.960 回答
0

你可以试试:

add_column :table, :column5, TrueClass, :default => false

change_column :table, :column4,  Integer, :null => false, :default => 0
于 2013-05-03T16:04:36.160 回答
0

您不需要将数字指定为字符串。检查下面的代码以获取正确的语法。

class AddStuffToTable < ActiveRecord::Migration
  def change
   add_column :table, :column4, :string
   add_column :table, :column5, :boolean, :default => false
   add_column :table, :column1, :default => 0
   add_column :table, :column2, :default: => 5.8
 end
end
于 2013-05-03T16:07:46.237 回答
0

感谢你们。我按照您的建议尝试change_column了,显然还有一种change_column_default方法,因此代码是:

class AddStuffToTable < ActiveRecord::Migration
  def change
    add_column :table, :column4, :string
    add_column :table, :column5, :boolean, default: false
    change_column_default :table, :column1, default: 0
    change_column_default :table, :column2, default: 5.8
  end
end
于 2013-05-03T16:44:06.803 回答