summaryrefslogtreecommitdiff
path: root/lib/email.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/email.rb')
-rw-r--r--lib/email.rb31
1 files changed, 31 insertions, 0 deletions
diff --git a/lib/email.rb b/lib/email.rb
new file mode 100644
index 0000000..4090275
--- /dev/null
+++ b/lib/email.rb
@@ -0,0 +1,31 @@
+class Email < String
+ include ActiveModel::Validations
+
+ validates :email,
+ :format => {
+ :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/, #local part of email is case-sensitive, so allow uppercase letter.
+ :message => "needs to be a valid email address"
+ }
+
+ # Make sure we can call Email.new(nil) and get an invalid email address
+ def initialize(s)
+ super(s.to_s)
+ end
+
+ def to_partial_path
+ "emails/email"
+ end
+
+ def to_param
+ to_s
+ end
+
+ def email
+ self
+ end
+
+ def handle
+ self.split('@').first
+ end
+
+end