将重复记录写入数据库的原因可能是什么?在我的创建操作中,我首先检查是否存在具有唯一标识符的记录,如果存在则更新它,否则创建新记录。但是现在在我的数据库中,我看到的重复记录不仅相隔几秒或几分钟,而且相隔甚至几天或几个月。可能导致这种情况的原因是什么?
def create
record_uid = params.delete(:uid)
if record_uid.present?
record = Record.find_by(uid: record_uid)
unless record.present?
redirect_to error_path and return
end
else
record = Record.new
end
record.attributes = params
record.save
redirect_to record
end
答案 0 :(得分:1)
有几种选择:
使用ActiveModel
验证创建模型级uniq约束:
class Record < ActiveRecord::Base
validates :uid, uniqueness: true
end
第一个选项会引发ActiveRecord::RecordNotUnique
而第二个record.save
会返回false
所以你需要处理这个方式