首页 > 解决方案 > Rails 5:rails url 错误的自定义 slug

问题描述

我正在关注hackernoon 上的教程,以生成混淆的URL。

第一步是在数据库中添加一个 slug 列,但是我得到了一个错误。

AddSlugToReservations

class AddSlugToReservation < ActiveRecord::Migration[5.2]
  def change
    add_column :reservations, :slug, :string, null: false
    add_index :reservations, :slug, unique: true
  end
end

我尝试时收到以下错误rails db:migrate

SQLite3::SQLException: Cannot add a NOT NULL column with default value NULL: ALTER TABLE "reservations" ADD "slug" varchar NOT NULL

所以我将迁移文件更改为:

class AddSlugToReservation < ActiveRecord::Migration[5.2]
  def change
    add_column :reservations, :slug, :string, null: false, default: 0
    change_column :reservations, :slug, :string, default: nil
    add_index :reservations, :slug, unique: true
  end
end

但是后来我遇到了以下错误:

SQLite3::ConstraintException: UNIQUE constraint failed: reservations.slug: CREATE UNIQUE INDEX "index_reservations_on_slug" ON "reservations" ("slug")

我应该怎么办?我找不到任何解决方案...

标签: ruby-on-rails

解决方案


您可以使用以下代码执行此操作

class AddSlugToReservation < ActiveRecord::Migration[5.0]
  def change
    add_column :reservations, :slug, :string, unique: true, default: 0, null: false
  end
end

推荐阅读