迁移后,尝试将列更改为 "null: true" 未反映在架构中



我有一个列/外键resolver_id,我希望能够具有零值(即:rails迁移以使列null => true(。假设我的迁移中有以下行:

def
    change_column_null :bugs, :resolver_id, true
end

但是,在运行成功的迁移(即生成迁移并运行rails db:migrate(之后,模式保持不变,此外版本号:

t.integer "resolver_id"

我期望:

t.integer "resolver_id" , null: true

我缺少什么吗?

我还尝试过像这样的change_column

change_column :bugs, :resolver_id, :integer, null: true

但是,这仍然没有反映在模式中。rails g migrationdb:migrate工作正常,模式中的版本号与最新的迁移匹配。

供参考,这是我的模式:

ActiveRecord::Schema.define(version: 20170502203934) do
  create_table "bugs", force: :cascade do |t|
    t.string   "name"
    t.text     "error_msg"
    t.text     "description"
    t.text     "causes"
    t.boolean  "resolved"
    t.datetime "created_at",  null: false
    t.datetime "updated_at",  null: false
    t.integer  "user_id"
    t.integer  "resolver_id"
    t.index ["resolver_id"], name: "index_bugs_on_resolver_id"
    t.index ["user_id"], name: "index_bugs_on_user_id"
  end
  create_table "users", force: :cascade do |t|
    t.string   "username"
    t.string   "first_name"
    t.string   "last_name"
    t.string   "email"
    t.datetime "created_at",      null: false
    t.datetime "updated_at",      null: false
    t.string   "password_digest"
    t.index ["email"], name: "index_users_on_email", unique: true
    t.index ["username"], name: "index_users_on_username", unique: true
  end
end

如果相关,则resolver_id外键是参考用户模型,即:

class Bug < ApplicationRecord
  # Associations
  belongs_to :user
  belongs_to :resolver, class_name: 'User'
end

null: true是默认行为。您永远不会在模式中看到它,您会看到null: false或什么都没有。

最新更新