Mysql ::错误:重复条目

我有一个模特

class Gift  :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' 

有什么问题?

看起来gifts表具有account_iduser_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