【问题标题】:validates_uniqueness custom handling RORvalidates_uniqueness 自定义处理 ROR
【发布时间】:2011-09-20 13:03:48
【问题描述】:

如果特定记录未通过 validates_uniqueness 约束,我想加载它。

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

有办法吗?

【问题讨论】:

    标签: ruby-on-rails ruby validates-uniqueness-of


    【解决方案1】:

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

    before_validation 是您可以使用的众多ActiveRecord callbacks 之一。

    另一种更常见的方法是,在您的控制器中,您基本上可以将 .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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-23
      • 2011-01-30
      • 2021-10-10
      • 2018-05-28
      • 2018-08-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多