Rails验证用户名中没有空格

时间:2013-08-16 19:57:53

标签: ruby-on-rails ruby

我想验证用户名没有白色/空白区域供我的用户使用。是否有内置验证可以做到这一点?或者最好的方法是什么。似乎这是一个非常普遍的要求。

5 个答案:

答案 0 :(得分:44)

我会尝试format validator

validates :username, format: { with: /\A[a-zA-Z0-9]+\Z/ }

在大多数情况下,当您不想要用户名中的空格时,您也不需要其他字符。

或者当您真的只需要检查空格时,请改为使用without

validates :username, format: { without: /\s/ }

完整文档:http://api.rubyonrails.org/classes/ActiveModel/Validations/HelperMethods.html#method-i-validates_format_ofvalidates ... format: {}validates_format_of ...相同)

答案 1 :(得分:5)

我相信你必须创建一个自定义验证器:

validate :check_empty_space

def check_empty_space
  if self.attribute.match(/\s+/)
    errors.add(:attribute, "No empty spaces please :(")
  end
end

答案 2 :(得分:2)

MurifoX的答案更好,但鉴于这是一个常见的要求,我认为这种情况更常用:

validates :presence

class User < ActiveRecord::Base
  validates :name, presence: true
end

答案 3 :(得分:1)

在您的用户模型中添加验证。验证:用户名,格式:{without:/ \ s /}将删除用户的白/空格。您甚至可以添加一条消息,提醒用户其用户名包含空格。

class User < ActiveRecord::Base

 validates :username, format: { without: /\s/, message: "must contain no spaces" }

end

答案 4 :(得分:0)

您可以使用 before_validation 回调来删除空白

class User
  before_validation :strip_blanks

  protected

  def strip_blanks
    self.username = self.username.strip
  end
end