在rails表中添加一个非空字段。

时间:2015-08-21 11:32:18

标签: ruby-on-rails activerecord

我想在rails表中添加一个新字段, 该字段不为空。 如何处理数据库中已准备就绪的条目?

2 个答案:

答案 0 :(得分:0)

创建rake任务并将默认值分配给null列。您也可以在迁移中执行相同操作。

您必须为此添加迁移,因为迁移仅运行一次。但是rake任务可以多次运行。并且不必担心你是否运行rake任务。

您的迁移应该有:

def migrate(direction)
  super
  Xyz.where(:price_currency => nil).each do |xyz|
  xyz.update(:price_currency => "USD") if direction == :up
end

def change
  add_column :xyzs, :price_currency, :sting, default: "USD", null: false
end

答案 1 :(得分:0)

如果您创建迁移以添加新的非空列,并只是指定一个默认值,那么所有存在的记录将采用默认值

class AddNotNullColumn < ActiveRecord::Migration
  def change
    add_column :table_name, :column_name, :column_type, null: false, default: 'default_value'
  end
end

这应该一次性完成所有这些