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)    
#
4

1 回答 1

1

像这样更改您的验证/^\w*$/

或者

你可以像这样验证

validates_format_of :screen_name, :with => /^[A-Za-z0-9.&]*\z/
于 2013-03-20T13:28:15.090 回答