如何验证用户名不是以某些字符串开头的?

时间:2015-07-08 00:04:40

标签: ruby-on-rails ruby regex validation ruby-on-rails-4

用户模型中的一个变量是Traceback (most recent call last): File "examples/golomb8.py", line 26, in <module> from google.apputils import app ImportError: No module named google.apputils 。我想保留以“vondel”开头的用户名。因此,我想让username以“vondel”开头无效。我怎么能这样做?

以下是我在username上设置验证的尝试。但是,仍然可以生成以“vondel”开头的username,并且不会生成错误消息。有没有办法用正则表达式做到这一点?

username

2 个答案:

答案 0 :(得分:3)

最直接的方法是使用starts_with?方法:

test_string = "vondelfoo"
test_string.starts_with?("vondel") # => true

除此之外,我建议您学习如何使用正则表达式执行此操作。正则表达式是一个非常宝贵的工具,你一定要学会如何使用它们。

另外一个提示 - 我已经听说Rubular是开始使用Ruby正则表达式的好工具。

修改

the Tin Man提出了一个好点 - Regexps是一个功能强大但却过于复杂的解决方案。虽然我强烈建议你学习如何使用它们,但你应该更喜欢这里简单明了的解决方案。

答案 1 :(得分:1)

只需将vondel_not_allowed方法中的条件更改为:

即可
def vondel_not_allowed
  if username.start_with?('vondel')
    errors.add(:username, "cannot start with 'vondel'")
  end
end