gpt4 book ai didi

ruby-on-rails - 简单的 Rails 格式验证未触发

转载 作者:数据小太阳 更新时间:2023-10-29 08:10:11 25 4
gpt4 key购买 nike

我正在构建一个应用程序,用户可以在其中为其个人资料创建 url slugs。为了确保 slugs 有效,我在用户模型中为 slugs 添加了一个验证:

  validates :slug, :uniqueness => true, :format => { :with => /[a-z]+/ }, :allow_nil => true, :allow_blank => true

但是,无论 slug 字符串是什么格式,验证似乎都通过了,例如:

u.slug = 'jlskdf .jc oi/slkdjfie\*asdf&(*&*ss%&'
=> "jlskdf .jc oi/slkdjfie\\*asdf&(*&*ss%&"
u.save
=> true

显然,无论我将正则表达式更改为什么都不重要,一切都会通过。我也尝试过这种格式:

validates_format_of :slug, :with => /[a-z]+/

这给出了相同的结果。有人知道会发生什么吗?

最佳答案

您的正则表达式未锚定,因此只要模式至少包含一个字母 a-z,它就会匹配。其他任何东西都是有效的。将 \A\z 添加到开头和结尾,以防止匹配较大输入中的任何子字符串。

:with => /\A[a-z]+\z/

关于ruby-on-rails - 简单的 Rails 格式验证未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9332907/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com