【发布时间】:2011-09-01 03:23:59
【问题描述】:
我有一个 Message.uuid 字段,我想为其添加验证,其中包括:
支持:
- A-Z、a-z、0-9
- 中间有破折号,但从不以破折号开头或结尾。
- 至少 5 个,不超过 500 个字符
在 Rails 中为这些规则编写模型验证的最佳方法是什么?
谢谢
更新:
validates :uuid,
:length => { :within => 5..500 },
:format => { :with => /[A-Za-z\d][-A-Za-z\d]{3,498}[A-Za-z\d]/ }
使用有效的 UUID 失败
【问题讨论】:
-
你需要将你的正则表达式锚定在
^和$之间,否则"@%#@#$AAAAA@#%@#$"之类的东西会通过。 -
你还应该限制你的
format验证器的范围;您当前尝试验证长度两次,而像AAA这样的 UUID 将导致两个错误:一个关于长度,一个关于格式。您可能只希望它导致length错误。
标签: ruby-on-rails ruby-on-rails-3