2017-12-26 14 views
0

のたくさんの検証は、私はニックネームを検証したいが、私はこのような形式の多くを持っている:私はそれを解決することができますどのようにこのようにのRails:フォーマット

validates :nickname, presence: true, unniqueness: true, format: { with: /\A[a-zA-Z0-9]+\Z/ }, format: { without: /\s/ }, format: { without: /[!-\/\@\^\~\`\(\)\[\]\>\<\=]/ } 

warning: key :format is duplicated and overwritten on line 38 
warning: key :format is duplicated and overwritten on line 38 

明らかdown't作業、?

format: { with: /\A[a-zA-Z0-9]+\Z/ } 

しかし、あなたはおそらく\z代わりの\Zは、末尾の改行の問題を避けたい:

答えて

2

あなたの最初の正規表現はすべてをカバーしていただきありがとうございます。 /\A[a-zA-Z0-9]+\z/に一致するものには空白文字が含まれていないので、句読点テストと同様に/\s/テストにはすでに適用されています。

また、uniquenessのスペルが間違っていますので、修正することも必要です。あなたはそれぞれのを確認することができるように

validate :nickname_format 

def nickname_format 
    return if(!nickname) # The `presence: true` takes care of complaining about this. 
    if(nickname ~! ...) 
    errors.add(:nickname, 'blah blah') 
    elsif(...) 
    ... 
    end 
end 

:あなたが本当にテストするために、複数の正規表現を持っていたなら、あなたは、カスタム方法でそれを行うことができ

validates :nickname, presence: true, uniqueness: true, format: { with: /\A[a-zA-Z0-9]+\Z/ } 

:だけであなたを残して

正規表現

+0

大変ありがとうございます。 – rod

関連する問題