使用Rails和Postgresql迁移时不会填充默认值

Dav*_*e G 6 sql postgresql ruby-on-rails ruby-on-rails-3

我目前正在尝试运行此迁移:

class AddDroppedProjectsCountToUser < ActiveRecord::Migration
  def self.up
    add_column :users, :dropped_projects, :integer, {:default=>0, :required=>true}
  end

  def self.down
    remove_column :users, :dropped_projects
  end
end
Run Code Online (Sandbox Code Playgroud)

该列已正确添加,但没有旧记录填充为0.它们是零.我也尝试过使用default=>'0',但无济于事.知道为什么会这样吗?(Rails 3.0.3)


编辑添加:当我创建一个新用户时,它工作正常,一切看起来都正确.只是旧用户在表中仍然没有nil值.

mu *_*ort 12

如果你说:

def self.up
  add_column :users, :dropped_projects, :integer, :null => false, :default => 0
end
Run Code Online (Sandbox Code Playgroud)

代替?没有:null=>false你仍然允许NULL,dropped_projects所以PostgreSQL没有理由让它们成为0.而且,我认为:required不是一个有效的选择add_column; 因为选项只是一个简单的选项Hash,add_column只查找它所知道的选项,所以你的stray :required选项会被默默忽略.