カラム値/外部キーがresolver_id
で、ヌル値(たとえば:Rails Migration to make a column null => true)を持つことができます。成功した移行を実行した後、しかしマイグレーション後に列を「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 migration
とdb: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
外部キーはすなわち、Userモデルの参照です:
class Bug < ApplicationRecord
# Associations
belongs_to :user
belongs_to :resolver, class_name: 'User'
end