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)
有关创建参考的更多信息