summaryrefslogtreecommitdiff
path: root/lib/reserve_usernames/validate.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/reserve_usernames/validate.rb')
-rw-r--r--lib/reserve_usernames/validate.rb27
1 files changed, 27 insertions, 0 deletions
diff --git a/lib/reserve_usernames/validate.rb b/lib/reserve_usernames/validate.rb
new file mode 100644
index 0000000..669c2fb
--- /dev/null
+++ b/lib/reserve_usernames/validate.rb
@@ -0,0 +1,27 @@
+module ReserveUsernames::Validate
+ def self.included(base)
+ base.class_eval do
+
+ validate :check_if_address_is_taken
+
+ protected
+
+ #
+ # Only query ReservedUsername if this is a new record.
+ # Otherwise, validation will always fail because the address
+ # has been taken... by this identity.
+ #
+ def check_if_address_is_taken
+ if new_record? && address
+ username = address.split('@').first
+ if ReservedUsername.find(username)
+ Rails.logger.info("ReserveUsernames - #{username} is taken.")
+ errors.add :address, :taken
+ end
+ end
+ rescue ActiveResource::ResourceNotFound
+ end
+
+ end
+ end
+end