summaryrefslogtreecommitdiff
path: root/lib/reserve_usernames/validate.rb
diff options
context:
space:
mode:
authorelijah <elijah@riseup.net>2015-07-10 17:11:44 -0700
committerelijah <elijah@riseup.net>2015-07-10 17:11:44 -0700
commit938be908267d4377935729484682eaf6342d17e9 (patch)
treecbef1c8154149d7b827a59caa009f4f7173b1cd6 /lib/reserve_usernames/validate.rb
initial commit.HEADmaster
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