首页 > 解决方案 > 验证中错误格式的自定义消息

问题描述

在我的模型/user.rb 我有这个验证

  validates :username, uniqueness: { case_sensitive: false },
                       length: { in: 3..15 },
                       format: { with: /\A[^\.]+\z/ },
                       format: { without: /\s/ }

三个问题:

  1. 我可以用不同的方式编写正则表达式吗?就在一行。
  2. 如果用户尝试注册为“Magic Mike”,则会显示“无效”。但是太笼统了。如何编辑它以写“没有白色/空格”?
  3. 我可以在注册期间禁止空格键吗?在铁轨上怎么做?我应该使用javascript吗?

标签: ruby-on-rails

解决方案


你只想要'没有空格'和'只有字母'对吗?

/^\w+$/

您还可以在正则表达式中包含长度要求:

/^\w{3,15}$/

您实际上不能禁止空格键。但是在 javascript 中,如果在字段中插入空格字符,则会显示错误,并且您可以从输入字段中删除空格。

如果您希望显示更多解释性消息,请使用 message: 选项:

validates :username, uniqueness: {case_sensitive: false, message: 'must be unique'}
validates :username, format: {with: /^\w{3,15}$/, message: 'must be 3-15 letters with no spaces'}

推荐阅读