0

friendly_idRails4プロジェクトにセットアップしようとしている間、同様に、テーブルに「友人」の後に「友人」を追加するとエラーが発生しました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
4

2 に答える 2

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、そして私たちの残りに感謝します...

于 2013-11-10T18:34:25.777 に答える
0

このエラーは、データベース内の 2 つの行が同じスラッグ (空の文字列) を共有しているように聞こえますが、スラッグ列に一意のインデックスを追加しているため、これは許可されていません。

エラーが実際に発生するのはいつですか?どのキーストロークまたはクリックが原因ですか?

friends テーブルの行を削除するか、移行ファイルからそのオプションを削除してインデックスを非一意にします (後で別の移行で変更できます)。

于 2013-11-10T18:17:06.417 に答える