2013-08-16 21 views
11

ユーザー名にユーザーの空白スペースがないことを検証したいと考えています。これを行う検証が組み込まれていますか?またはこれを行うための最良の方法は何ですか?かなり一般的な要件であるように思えます。Railsはユーザー名に空白がないことを確認します

+0

を除去するためにbefore_validationコールバックを使用することができます。私の最高の推測は 'st == st [/ \ s /]'かどうかを調べることです。文字列に空白文字が1つでもある場合はfalseになります。 – squiguy

答えて

38

私はformat validatorしようとするだろう:

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

ほとんどの場合、ユーザー名に空白を入れたくない場合は、他の文字も必要ありません。

それとも、本当に唯一の、空白文字をチェックする代わりにwithoutを使用する必要がある場合:

validates :username, format: { without: /\s/ } 

完全なドキュメント:http://api.rubyonrails.org/classes/ActiveModel/Validations/HelperMethods.html#method-i-validates_format_of検証を追加するには、Userモデルでは

5

私は、カスタムバリデータを作成する必要があります信じる:

validate :check_empty_space 

def check_empty_space 
    if self.attribute.match(/\s+/) 
    errors.add(:attribute, "No empty spaces please :(") 
    end 
end 
+2

ちょうど '\ s'、' + 'は不要です。 – pguardiario

2

MurifoXの答えは良いですが、それは一般的な要件であることについては、私は、これはより頻繁に使用されていると思う:

validates :presence

class User < ActiveRecord::Base 
    validates :name, presence: true 
end 
1

validates ... format: {}validates_format_of ...と同じです)。 validates:username、format:{without:/ \ s /}は、ユーザーの空白スペースを削除します。ユーザー名に空白が含まれていることをユーザーに警告するメッセージを追加することもできます。

class User < ActiveRecord::Base 

validates :username, format: { without: /\s/, message: "must contain no spaces" } 

end 
+0

詳細を編集してください。コード専用と「試してください」の回答は、検索可能なコンテンツが含まれていないため、推奨されません。なぜ誰かが「これを試してみる」べき理由を説明しません。 – abarisone

0

あなたは、私がレール機能がある賭け、私はウェブ開発をしない空白

class User 
    before_validation :strip_blanks 

    protected 

    def strip_blanks 
    self.username = self.username.strip 
    end 
end 
関連する問題