开发者

Rails, Alphanumeric validation in the controller

In my app I let users select a username, just like the twitter signup page: https://twitter.com/signup

When the user starts typing a username, I want in real-time to let the user know if the username is available & valid.

The regex I've been using to validate the username is alphanumeric is:

/^[a-z0-9]+[-a-z0-9]*[a-z0-9]+$/i

Given params[:username]

In the controller, how can I validate if the username is alphanumeric or not. Note, I'm not saving the record here just validation. so a model validation wou开发者_如何学Pythonldn't work.

Ideas? Thanks


You'd still want to use model validations.

Something like this perhaps:

class User
  validates :username, :format => { :with => /your regex/ }, :uniqueness => true
end

# then in some controller action or rack app
def test_username
  user = User.new(:username => params[:username])

  # Call user.valid? to trigger the validations, then test to see if there are 
  # any on username, which is all you're concerned about here.
  #
  # If there are errors, they'd be returned so you can use them in the view,
  # if not, just return success or something.
  #
  if !user.valid? && user.errors[:username].any?     
    render :json => { :success => false, :errors => user.errors[:username] }
  else
    render :json => { :success => true }
  end
end


r = /^[a-z0-9]+[-a-z0-9]*[a-z0-9]+$/i

unless your_string.match(r).nil?
  # validation succeeded
end


I think your regex is a little overly verbose. I'd actually try the following regex for the alphanumeric validation:

/\A[A-Z0-9]+\z/i
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜