如果不满足正则表达式,如何在rails模型验证中指定自定义错误消息?

时间:2015-03-24 16:38:04

标签: ruby-on-rails regex

假设我们有一个带有name属性的User模型。假设我们在模型中使用以下名称...

VALID_NAME_REGEX = /^[A-Za-z0-9]+(?:[ _-][A-Za-z0-9]+)*$/
validates :name, presence: true, format: { with: VALID_NAME_REGEX },
                  uniqueness: { case_sensitive: false }, length: { minimum: 2, maximum: 20 }

如果用户输入的内容不是字母数字,空格,下划线或连字符,则名称将无法进行正则表达式验证,用户将无法保存。

将向用户返回“姓名无效”消息。

这不是很有帮助。如何将自定义消息绑定到正则表达式验证失败,以便如果名称未通过正则表达式,我们将返回一个自定义错误,如“名称只能包含字母,数字,空格,下划线和连字符”?

1 个答案:

答案 0 :(得分:2)

只需添加"消息"验证哈希的关键。 Check out the docs.

VALID_NAME_REGEX = /^[A-Za-z0-9]+(?:[ _-][A-Za-z0-9]+)*$/
validates :name, presence: true, format: {
    with: VALID_NAME_REGEX,
    message: "Name can only include letters, numbers, spaces, underscores, and hyphens" 
  },
  uniqueness: { case_sensitive: false },
  length: { minimum: 2, maximum: 20 }