"Ключ (slug)=() уже существует" в friendly_id в приложении rails4
Пока я пытаюсь настроить friendly_id
в моем проекте rails4, аналогично, я получил ошибку после добавления слова "друг" после слова "друг" в friends
Таблица. Как я могу это исправить:
PG::UniqueViolation - ERROR: duplicate key value violates unique constraint "index_friends_on_slug"
DETAIL: Key (slug)=() already exists.
Кроме того, вот мои файлы, проблема может быть основана на:
# app/models/friend.rb:
class Friend < ActiveRecord::Base
has_many :entries, dependent: :destroy
belongs_to :user
extend FriendlyId
friendly_id :candidates, use: [:slugged, :finders] # not :history here
def candidates
[
:first_name,
[:first_name, :last_name]
]
end
end
# db/schema.rb:
create_table "friends", force: true do |t|
t.string "first_name"
t.string "last_name"
t.text "address"
t.string "email"
t.string "phone"
t.string "slug"
t.integer "user_id"
t.datetime "created_at"
t.datetime "updated_at"
end
add_index "friends", ["slug"], name: "index_friends_on_slug", unique: true, using: :btree
add_index "friends", ["user_id"], name: "index_friends_on_user_id", using: :btree
ОБНОВЛЕНИЕ: файл миграции:
class CreateFriends < ActiveRecord::Migration
def change
create_table :friends do |t|
t.string :first_name
t.string :last_name
t.text :address
t.string :email
t.string :phone
t.string :slug
t.integer :user_id
t.timestamps
end
add_index :friends, :slug, unique: true
add_index :friends, :user_id
end
end
2 ответа
Теперь исправлено, раскомментировав эти строки на config/initializers/friendly_id.rb
:
# Most applications will use the :slugged module everywhere. If you wish
# to do so, uncomment the following line.
#
config.use :slugged, :finders
#
# By default, FriendlyId's :slugged addon expects the slug column to be named
# 'slug', but you can change it if you wish.
#
config.slug_column = 'slug'
Спасибо @basgys, @DavidGrayson и всем остальным...
Эта ошибка звучит так, как будто две строки в базе данных совместно используют один и тот же слаг, который является пустой строкой, и это недопустимо, поскольку вы добавляете уникальный индекс в столбец слагов.
Когда на самом деле происходит ошибка? Какое нажатие клавиши или щелчок вызывает это?
Либо удалите строки в таблице друзей, либо сделайте индекс неуникальным, удалив этот параметр из файла миграции (вы можете изменить его позже с помощью другой миграции).