Rails は、作成時に :format 検証をスキップしています。作成時には、何でも受け入れます。その後、更新時に :presence と :format の両方が期待どおりに機能しています。これを変更して、作成時に :allow_blank を実行し、フォーマットもチェックするにはどうすればよいですか?
validates :mail, :allow_blank => true, :on => :create,
:format => { :with => /^([^@\s]+)@((?:[-a-z0-9]+\.)*[a-z]{2,})$/i },
:length => { :maximum => 60 },
:presence => true, :on => :update