迁移不起作用后,将默认值添加到列

时间:2015-02-13 09:37:01

标签: ruby-on-rails ruby activerecord

我正常地在表中创建了一个列,然后执行了rake db:migrate。然后我意识到我需要为列设置默认值。在查看stackoverflow之后,我发现有几个人说我要做的就是编辑迁移文件以便这个

def change
  add_column :accounts, :equipment_visible, :boolean
end

变成这个

def change
  add_column :accounts, :equipment_visible, :boolean, default: true
end

我做了这个然后再次运行rake db:migrate但没有发生任何事情。

我一直在寻找答案,因为我认为它没有用,因为我已经运行了rake db:migrate。

然后我运行了另一次迁移并将其放入文件中;

def change
    def up
      change_column :accounts, :equipment_visible, :boolean, default: true
    end

    def down
      change_column :accounts, :equipment_visible, :boolean, default: nil
    end
  end

但仍然没有发生任何事情....有谁知道我现在可以怎么做呢?

非常感谢

*编辑

表格的架构如下:

create_table "accounts", force: true do |t|
    t.string   "name"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.boolean  "crafts_visible",    default: true
    t.boolean  "equipment_visible"
  end

我正在努力获得" equipment_visible"有默认值:true就像" crafts_visible"

2 个答案:

答案 0 :(得分:1)

您必须回滚迁移并再次迁移数据库:

bundle exec rake db:rollback
bundle exec rake db:migrate

或只运行redo任务:

bundle exec rake db:migrate:redo

答案 1 :(得分:0)

我想你想要:

change_column_default :accounts, :equipment_visible, true