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

Ruby on rails 当不满足正则表达式时,如何在rails模型验证中指定自定义错误消息?,ruby-on-rails,regex,Ruby On Rails,Regex,假设我们有一个带有name属性的用户模型。假设我们的模型中有以下应用于名称 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, maximu

假设我们有一个带有name属性的用户模型。假设我们的模型中有以下应用于名称

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 }
如果用户输入的内容不是字母数字、空格、下划线或连字符,则名称将无法通过正则表达式验证,并且用户将不会保存

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

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

只需将“消息”键添加到验证哈希中即可

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 }