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

时间:2018-07-26 09:43:40

标签: 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

并生成以下架构:

  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

当我运行运行consistency_fail测试并通过失败的guard时,

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,但我不知道,我也找不到关于特定问题的任何信息。

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

1 个答案:

答案 0 :(得分:6)

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

有关creating references

的更多信息