【发布时间】:2016-06-30 12:42:10
【问题描述】:
我的模型有带有友好 ID gem 的 slug,有时用户只输入数字 slug 并且在访问页面时遇到问题。 然后我想更改模型验证,除了只有数字和一些特殊字符。
这是当前验证的模型
validates :slug, presence: true, length: { maximum: 200 }, uniqueness: true,
format: {with: /\A[^\s!#$%^&*()()=+;:'"\[\]\{\}|\\\/<>?,]+\z/, message: :invalid_slug}
如何在此处添加??
示例:
当前:
'123' => valid
'abc' => valid
'adb?&' => invalid
新:
'123' => invalid
'abc' => valid
'adb?&' => invalid
干杯
【问题讨论】:
-
您想在 slug 中包含所有特殊字符(除了 ? 和 &)还是只包含下划线和连字符?
-
如何从输入中生成 slug?为什么在生成 slug 时不处理这种情况?
-
所以,只需将数字添加到否定字符类:
/\A[^0-9\s!#$%^&*()()=+;:'"\[\]\{\}|\\\/<>?,]+\z/- 这不是您需要的吗?或者您是否想允许数字 + 其他内容并希望禁止仅数字的 slug?然后使用/\A(?!\d+\z)[^\s!#$%^&*()()=+;:'"\[\]\{\}|\\\/<>?,]+\z/。
标签: ruby regex ruby-on-rails-4 slug