Rails迁移,引用“ unique:true”不会在架构中生成“ unique:true”,从而导致constancy_fail检查失败

The*_*tix 1 ruby activerecord rails-migrations ruby-on-rails-5.1

我有以下迁移

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
Run Code Online (Sandbox Code Playgroud)

并生成以下架构:

  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
Run Code Online (Sandbox Code Playgroud)

当我运行后卫运行consistency_fail失败的测试时:

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

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

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

是什么导致此问题,我正在做什么导致此问题,并且考虑到当前的迁移,我该怎么做才能解决该问题?

Leo*_*Leo 13

t.references :service, foreign_key: true, dependent: :destroy, index: {unique: true}
Run Code Online (Sandbox Code Playgroud)

有关创建参考的更多信息