ruby - Rails 迁移,引用 `unique: true` 未在架构中生成 `unique: true`,导致 constancy_fail 检查失败

标签 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 但我不知道,而且我找不到关于我的任何信息具体问题。

是什么导致了这个问题,我在做什么导致了这个问题,在当前迁移的情况下,我可以做些什么来阻止这个问题?

最佳答案

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/

相关文章:

ruby-on-rails - Ruby on Rails - 电子邮件确认链接给出 nomethoderror

ruby-on-rails-3 - 如何覆盖rails中关系的默认has_many条件?

ruby-on-rails - 如何使用 ActiveRecord 将表复制到 Rails 中的另一个数据库?

ruby-on-rails - 链元搜索结果

ruby-on-rails - Rails : Remove foreign key constraint

mysql - 有没有办法在 Rails 中预加载任意数量的父关联?

ruby - 运行我的第一个 RSpec 测试,有什么方法可以只打印错误而没有回溯?

arrays - 为什么 Array#inject 被称为注入(inject)?

ruby-on-rails-3 - 升级 Postgres 和 Rails 后,我无法让我的迁移回到正轨

ruby-on-rails - 运行db :migrate on multiple nodes?时如何避免计时问题