2013-03-20 43 views
0

我有一个用户表,其中有一个名为screen_name的行是一个字符串。Rails字段验证不能按预期工作

在其他限制中,屏幕名称不应包含像。 ,&%@等 为此我构建了以下验证:

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 2013-03-20 13:40:27

+1

@MPL嗨,接受我的回答,通过点击绿色的写符号 – 2013-03-20 13:42:04