我想验证表单值的格式,允许空值或需要特定格式.

要根据格式验证值,可以这样做:

validates :application_bundle_identifier, :format => {
  :with => /^[a-zA-Z0-9.-]+$/,
  :message => "A bundle identifier should contain only alphanumeric (A-Z,a-z,0-9), hyphen (-), and period (.) characters."
}

现在,我想允许用户根本不输入值.在本例中,我可以将regexp调整为^[a-zA-Z0-9.-]*$,但这似乎不是一个很好的Rails方法.根据格式的不同,这可能是不可能的,或者至少不太清楚.

在这种情况下,最佳做法是什么?

推荐答案

当属性为空/空/无时,可以使用选项allow_blank: true跳过验证.

https://guides.rubyonrails.org/active_record_validations.html#allow-blank

Ruby-on-rails相关问答推荐

对Rails进行枚举不允许空值

Ubuntu Webhooks无法读取安装的正确RVM Ruby

错误AESGCMOpen获取密码:消息身份验证失败:Golang解密GCM

Rails 7 - 富文本不显示附加的媒体内容

在命名空间内设计

如何避免 has_many :through 关系中的重复?

如何在 Rails 迁移中添加判断约束?

使用 jQuery 在 Rails 中不显眼的动态表单字段

Rails - 如何在 f.submit 上放置确认弹出窗口?

Rails:立即渲染并退出

我应该将全局共享部分模板放在哪个文件夹中?

rails 单数资源还是复数?

禁用 JS/Ajax 请求时的 ActionController::InvalidAuthenticityToken

ruby/ruby on rails 内存泄漏检测

将 Rails 服务器绑定到 0.0.0.0 能给你带来什么?

使用 ruby​​ on rails 活动记录插入多条记录

错误:无法构建 gem 原生扩展 - 安装 mysql2 时出错

如何在 Rails 4 中测试控制器关注点

在 Rails 3 中突出显示当前页面的最佳方法? -- 有条件地将css类应用于链接

为什么 Rails 需要 JavaScript 运行时?