validates_format_of with condition

Hi,
I am trying to validate the email format by using "validates_format_of".
I have written a code like this:-
"validates_format_of :email,
:with=>/^[0-9a-zA-Z_][\w\.-]*[a-zA-Z0-9_]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/,
                      :message => "is not valid" "

It is working fine, but in my application email id is not manadatory.
So how should add the condition in this validator so that it will
validate the email only when the email address is present.

Can anyone help me out?

Thanks,
Tushar

Tushar Gandhi wrote:

Hi,
I am trying to validate the email format by using "validates_format_of".
I have written a code like this:-
"validates_format_of :email,
:with=>/^[0-9a-zA-Z_][\w\.-]*[a-zA-Z0-9_]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/,
                      :message => "is not valid" "

It is working fine, but in my application email id is not manadatory.
So how should add the condition in this validator so that it will
validate the email only when the email address is present.

Can anyone help me out?

Thanks,
Tushar

Have you considered :unless

:allow_nil => true

Hi,
   Use allow_blank => true

validates_format_of :email,
:with=>/^[0-9a-zA-Z_][\w\.-]*[a-zA-Z0-9_]@[a-zA-Z0-9][\w\.-]*[a-zA-
Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/,
                      :message => "is not valid",
:unless => Proc.new { |your_model_name_or_any_variable_name_you_want|
your_model_name_or_any_variable_name_you_want.email.blank?}

So, supposing your model is a User:

validates_format_of :email,
:with=>/^[0-9a-zA-Z_][\w\.-]*[a-zA-Z0-9_]@[a-zA-Z0-9][\w\.-]*[a-zA-
Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/,
                      :message => "is not valid",
:unless => Proc.new {|user| user.email.blank?}