我正常地在表中创建了一个列,然后执行了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"
答案 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