モデルベリファイア
1413 ワード
まず、ベリファイアを書きます.
validatesでwith使用:
パラメータ付きのベリファイアの例を次に示します.
複数のベリファイアを同時に使用することもできます.
class EmailValidator < ActiveRecord::Validator
def validate()
record.errors[:email] << "is not valid" unless
record.email =~ /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i
end
end
validatesでwith使用:
class User < ActiveRecord::Base
validates_with EmailValidator
end
パラメータ付きのベリファイアの例を次に示します.
class EmailValidator < ActiveRecord::Validator
def validate()
email_field = options[:attr]
record.errors[email_field] << "is not valid" unless
record.send(email_field) =~ /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i
end
end
class User < ActiveRecord::Base
validates_with EmailValidator, :attr => :email_address
end
class User < ActiveRecord::Base
validates_with EmailValidator, :if => Proc.new { |u| u.signup_step > 2 },
:attr => :email_address
end
複数のベリファイアを同時に使用することもできます.
class User < ActiveRecord::Base
validates_with EmailValidator, ZipCodeValidator, :on => :create
end