0

モデルにフォーマット検証を適用しようとしていますが、モデルを作成しても無効として返されません。長さの検証を追加しましたが、問題なく動作します。私は何を間違っていますか?

require 'rubygems'
require 'active_record'

class User < ActiveRecord::Base
  validates :username, :format => { :with => /[A-Za-z]+/, :message => "Only letters a-z are allowed" }
  validates :username, :length => { :maximum => 20, :too_long => "%{count} letters is too many"}
end  

ActiveRecord::Base.establish_connection( ... )


user = User.create!(:username => 'johnsmith1234', :signupdate => '2010-11-12')
puts user.valid?

長さが 20 文字を超えない限り、出力は常に true であり、長さに関するエラーが発生します。では、なぜフォーマット検証が起動しないのでしょうか?

4

1 に答える 1

2

/[A-Za-z]/指定された文字列内の1つ以上のアルファベットをチェックします。アルファベットのみが必要な場合は、とを指定する必要があり^ます$。(すなわち)/^[A-Za-Z]$/

validates :username, :format => { :with => /^[A-Za-z]+$/, :message => "Only letters a-z are allowed" }

new新しいユーザーを作成するためにもう1つ使用します。create検証が失敗した場合、またははcreate!エラーをスローします。

user = User.new(:name => "john123")
if user.valid?
  #do something
else
  #do something          `user.errors.full_messages` will have your validation messages if it has error
end  
于 2013-02-05T18:36:18.267 に答える