2013-03-20 8 views
0

У меня есть таблица пользователей со строкой, называемой screen_name, которая является строкой.Проверка правильности поля не работает как ожидалось

Среди других ограничений имя экрана не должно содержать символов. , &% @ и т.д. Для этого я построил следующий валидатор:

validates :screen_name, presence: true, 
      length: { maximum: 15 }, 
      uniqueness: { case_sensitive: false }, 
      format: { with: /\w+/ } 

Когда я затем ввести имя экрана как foo.bar он с радостью согласился и храниться в базе данных.

Что я делаю неправильно?

# == Schema Information 
# 
# Table name: users 
# 
# id    :integer   not null, primary key 
# name   :string(255) 
# email   :string(255) 
# created_at  :datetime   not null 
# updated_at  :datetime   not null 
# password_digest :string(255) 
# remember_token :string(255) 
# admin   :boolean   default(FALSE) 
# screen_name  :string(255)  
# 

ответ

1

изменить валидацию как этот /^\w*$/

или

Вы можете проверить, как этот

validates_format_of :screen_name, :with => /^[A-Za-z0-9.&]*\z/ 
+0

Спасибо Раджа, который работал. Можете ли вы рассказать мне, какая разница между/\ w +/и/^ \ w * $/ Потому что, когда я тестирую их в Rubular.com, я не вижу разницы. – MPL

+1

@MPL Приветствую ваше благодарение, приняв мой ответ, нажав зеленый символ записи –

Смежные вопросы