我有一个模特
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'
出了什么问题?
答案 0 :(得分:3)
看起来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