我有一个带有一行名为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)
#
答案 0 :(得分:1)
更改您的验证,例如/^\w*$/
或
您可以像这样验证
validates_format_of :screen_name, :with => /^[A-Za-z0-9.&]*\z/