所以我使用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和rails 2.3.3
阅读创建和创建的文档!小心.
既创造又创造!检查回调(在您的情况下验证). 如果引发异常,create方法返回false,如果不是则返回true, 创建!如果记录无效,则引发异常.
但是,如果数据库中有唯一索引且模型上没有验证集,则create 可以抛出ActiveRecord::RecordNotUnique
.在这种情况下,您应该添加validates :fieldname, uniqueness: true
到模型上.