gab*_*ape 42 rails-migrations ruby-on-rails-4
鉴于以下内容schema.rb:
create_table "people", force: true do |t|
t.string "name", null: false
t.integer "age"
t.integer "height"
t.string "email"
t.boolean "married", default: false
t.text "bio"
t.integer "fav_number"
t.decimal "lucky_num", precision: 2, scale: 2
t.datetime "birthday"
t.datetime "created_at"
t.datetime "updated_at"
end
Run Code Online (Sandbox Code Playgroud)
我想删除name默认值null: false.我已尝试使用单独的迁移change_column_default,但这对其没有影响schema.rb.有什么建议?
lui*_*7up 70
来自文档:
def up
change_column_default :table_name, :status, 0
end
def down
change_column_default :table_name, :status, nil
end
Run Code Online (Sandbox Code Playgroud)
Ran*_*ili 14
当你执行db:migrate时,'up'函数肯定会完成这项工作.
但在将来,在某些情况下,例如回滚,您可能需要一个函数来反转此特定迁移.
def up
change_column_null :people, :name, true
end
def down
change_column_null :people, :name, false
end
Run Code Online (Sandbox Code Playgroud)
小智 9
听起来你并没有试图改变列的默认值,而是删除NOT NULL约束并允许空值(即从"null:false"更改为默认值"null:true").如果是这种情况,那么你可以使用change_column_null:
class ChangeNameNull < ActiveRecord::Migration
def change
change_column_null :people, :name, true
end
end
Run Code Online (Sandbox Code Playgroud)
编辑1: - 修正错字
| 归档时间: |
|
| 查看次数: |
22905 次 |
| 最近记录: |