validates_唯一性自定义处理ROR



如果validates_唯一性约束失败,我想加载特定的记录。

我的模型中有id(主键)和title。如果用户输入一个已经存在的标题,如果想要搜索带有该标题的记录并加载该记录,而不是抛出错误。

有办法吗?

您可以使用before_validation回调自己检查有效性,当它失败时,触发您正在寻找的行为。因此,一种方法是在before_validation中编写代码,在那里您可以做一个简单的.valid?调用,或者手动运行唯一性验证。当验证失败时,您可以停止回调链,并触发自定义行为。

before_validation是可供您使用的众多ActiveRecord回调函数之一。

另一种更常见的方法是,在你的控制器中,你可以将.save调用包装在if语句中,因为如果验证失败,.save将返回false。在你描述的情况下,你可以用它来重定向到另一个操作。

@new_record = ThingImSaving.new(params[:thing_im_saving]
if @new_record.save
  ...validation has passed, continue the normal path
else
  ...validation has failed, do something else.
end

相关内容

  • 没有找到相关文章

最新更新