ruby-on-rails – ActiveRecord创建(不!)在验证时抛出异常

ruby-on-rails – ActiveRecord创建(不!)在验证时抛出异常,第1张

概述所以我使用ActiveRecord模型验证来验证RESTful应用程序中的表单. 我有一个创建动作: @association = Association.new 并且表单的接收端使用表单参数创建属性的数据哈希,以使用以下方法保存到数据库: @association = user.associations.create(data) 如果验证失败,我想简单地渲染创建 *** 作.问题是.create(not 所以我使用ActiveRecord模型验证来验证RESTful应用程序中的表单.

我有一个创建动作:

@association = Association.new

并且表单的接收端使用表单参数创建属性的数据哈希,以使用以下方法保存到数据库:

@association = user.associations.create(data)

如果验证失败,我想简单地渲染创建 *** 作.问题是.create(not!)方法在模型验证失败的情况下抛出异常.例:

valIDates_format_of :url,:with => /(^$)|(^(http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(([0-9]{1,5})?\/.*)?$)/ix,:message => "Your url doesn't seem valID."

在模型中产生:

ActiveRecord::RecordInvalID Exception: ValIDation Failed: Url Your url doesn't seem valID.

我以为.create!应该抛出异常,而.create不是.

我在这里错过了什么吗?

Ruby 1.8.7 patchlevel 173&轨道2.3.3

解决方法 请仔细阅读 create和 create!的文档.

create和create!都检查回调(在您的情况下验证).
 create方法如果引发异常则返回false,如果不是则返回true,
 如果记录无效,create!方法引发异常.

但是,如果数据库中有唯一索引且模型上没有验证集,则create可以抛出ActiveRecord :: RecordNotUnique.在这种情况下,您应该在模型上添加valIDates:fIEldname,uniqueness:true.

总结

以上是内存溢出为你收集整理的ruby-on-rails – ActiveRecord创建(不!)在验证时抛出异常全部内容,希望文章能够帮你解决ruby-on-rails – ActiveRecord创建(不!)在验证时抛出异常所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1285727.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存