Rails 迁移,引用"唯一:true"未在模式中生成"唯一:true"constancy_fail导致检查失败



我有以下迁移

class CreateBooking < ActiveRecord::Migration[5.1]
def change
create_table :bookings do |t|
t.integer :day_period, default: 0
t.references :service, foreign_key: true, unique: true, dependent: :destroy, index: true
end
end
end

并生成以下模式:

create_table "bookings", force: :cascade do |t|
t.integer "day_period", default: 0
t.bigint "service_id"
t.index ["service_id"], name: "index_bookings_on_service_id"
end

当我运行guard时,该guard运行consistency_fail测试,该测试失败:

There are calls to has_one that aren't backed by unique indexes.
----------------------------------------------------------------
Model          Table Columns
----------------------------------------------------------------
Service  bookings (service_id)
----------------------------------------------------------------

现在,最初我没有unique: true,但我回滚并添加了它,仍然是同样的问题,再次,没有index: true,所以我回滚并将其添加,仍然是相同的问题。

我认为这是因为模式中的service_id上没有unique: true,但我不知道,也找不到任何关于我的特定问题的信息。

是什么造成了这个问题,我在做什么导致了这个问题?考虑到当前的迁移,我能做些什么来阻止这个问题?

t.references :service, foreign_key: true, dependent: :destroy, index: {unique: true}

关于创建引用的更多信息

最新更新