ユーザー登録時にユーザー名やメールアドレスなどの項目のバリデーションチェックの設定例を備忘として残します。
1)存在チェック
$ vi app/models/user.rb
class User < ActiveRecord::Base attr_accessible :email, :name validates :name, :presence => true validates :email,:presence => true end
2)文字数チェック
$ vi app/models/user.rb
validates :name, :presence => true, :length => { :maximum => 50}
3)メールアドレスフォーマット
$ vi app/models/user.rb
class User < ActiveRecord::Base validates :name, :presence => true, :length => { :maximum => 50} VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i validates :email,:presence => true, :format => { :with => VALID_EMAIL_REGEX } end
※正規表現
\A
文字列の先頭にマッチ
[\w+\-.]+
少なくとも一つのワード文字、プラス、ハイフン、ドット
[a-z\d\-.]+
少なくとも一つの英小文字、数値、ハイフン、ドット
\.
文字列ドット
[a-z]+
少なくとも一つの英小文字
\z
文字列の最後にマッチ
i
大文字小文字を区別しない
4)メールアドレスの一意性チェック
$ vi app/models/user.rb
class User < ActiveRecord::Base validates :name, :presence => true, :length => { :maximum => 50} VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i validates :email,:presence => true, :format => { :with => VALID_EMAIL_REGEX },:uniqueness => { :case_sensitive => false } end
上記のようにemailのバリデーションに、大文字小文字は区別しない一意性チェックを追加します。
:uniqueness => { :case_sensitive => false }