我有以下迁移
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
但我不知道,而且我找不到关于我的任何信息具体问题。
是什么导致了这个问题,我在做什么导致了这个问题,在当前迁移的情况下,我可以做些什么来阻止这个问题?
最佳答案
t.references :service, foreign_key: true, dependent: :destroy, index: {unique: true}
更多关于 creating references
关于ruby - Rails 迁移,引用 `unique: true` 未在架构中生成 `unique: true`,导致 constancy_fail 检查失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51535807/