我是 ruby 新手,我想确保模型中三列的组合是唯一的。我尝试将 validates_uniqueness_of 与范围一起使用,但它没有按预期工作。所以我在我的数据库中添加了一个唯一索引,每次保存已经存在的值组合时都会引发 ActiveRecord::RecordNotUnique 异常。问题是我不确定如何处理异常。在我的控制器中,我将更新操作更改为:
def update
@patient_history = PatientHistory.find(params[:id])
@patient_history.save!
respond_to do |format|
format.html { redirect_to @patient_history, notice: 'Patient history was successfully updated.' }
format.json { head :no_content }
end
rescue ActiveRecord::RecordNotUnique
respond_to do |format|
format.html { render action: "edit" }
format.json { render json: @patient_history.errors, status: :unprocessable_entity }
end
end
end
此代码不保存更改并重定向到我的模型的显示页面 (:patient_history),并显示“患者历史记录已成功更新”的通知。我想要做的是让控制器重定向到编辑页面并在页面顶部闪烁一条关于错误的消息(很像 validates_uniqueness of 会做的)。
提前致谢