Mysql :: Ошибка: повторяющаяся запись - PullRequest
2 голосов
/ 09 апреля 2010

У меня есть модель

class Gift < ActiveRecord::Base
  validates_uniqueness_of :giver_id, :scope => :account_id
end

add_index(:gifts, [:account_id, :giver_id], :uniq => true)

Действие

def create
  @gift= Gift.new(params[:gift])

  if @gift.save
    ...
  else
    ...
  end
end

В «производственном» режиме я иногда получаю ошибку

ActiveRecord::StatementInvalid: Mysql::Error: Duplicate entry '122394471958-50301499' for key 'index_gifts_on_account_id_and_user_id'

В чем проблема?

1 Ответ

3 голосов
/ 09 апреля 2010

Похоже, таблица gifts имеет уникальный индекс для account_id и user_id.

Добавьте проверку уникальности вашей модели, если вам нужен этот индекс:

class Gift < ActiveRecord::Base
  validates_uniqueness_of :giver_id, :scope => :account_id
  validates_uniqueness_of :user_id, :scope => :account_id
end

В противном случае отбросить индекс.

DROP INDEX index_gifts_on_account_id_and_user_id ON gifts

Изменить: Попробуйте добавить проверку присутствия для giver_id.

class Gift < ActiveRecord::Base
  validates_presence_of :giver_id
  validates_uniqueness_of :user_id, :scope => :account_id
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...