0

我是 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 会做的)。

提前致谢

4

1 回答 1

1

您是如何尝试使用 validates_uniqueness_of 的?您应该使用它来确保此组合是唯一的,如下所示:

validates_uniqueness_of :column1, :scope => [:column2, :column3]
于 2013-05-21T14:22:39.813 回答