如何在Rails模型中使用save时跳过验证?
在Rails模型中调用save!时跳过验证的方法
针对你的代码场景,其实很简单,只需要给save!方法传递validate: false参数就能跳过模型验证了。
具体修改方式
把你代码里的:
save! #==>此处
改成:
save!(validate: false)
相关方法说明
save(validate: false):跳过验证保存记录,返回布尔值(成功返回true,失败返回false)save!(validate: false):跳过验证保存记录,如果保存失败(比如违反数据库约束)会抛出ActiveRecord::RecordInvalid以外的异常,这和你代码里的begin-rescue逻辑适配性很好——当前你的rescue块只捕获Stripe相关错误,其他保存失败的异常会正常抛出(如果需要处理这类异常,可以额外添加对应的rescue分支)
注意事项
虽然跳过验证能快速实现需求,但要留意:
- 确保在调用
save!(validate: false)之前,已经完成了必要的字段赋值(比如你的代码里的assign_order_number),避免因为数据库非空约束等导致保存失败 - 尽量只在明确需要的场景下使用跳过验证,否则可能导致数据不一致或者不合法的情况
内容的提问来源于stack exchange,提问作者vidur punj
相关产品推荐
相关产品推荐

