summaryrefslogtreecommitdiff
path: root/app/models/invite_code_validator.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/invite_code_validator.rb')
-rw-r--r--app/models/invite_code_validator.rb20
1 files changed, 18 insertions, 2 deletions
diff --git a/app/models/invite_code_validator.rb b/app/models/invite_code_validator.rb
index 978d3f5..73c333a 100644
--- a/app/models/invite_code_validator.rb
+++ b/app/models/invite_code_validator.rb
@@ -1,7 +1,17 @@
class InviteCodeValidator < ActiveModel::Validator
def validate(user)
- if not_existent?(user.invite_code)
+
+ user_invite_code = InviteCode.find_by_invite_code user.invite_code
+
+ if not_existent?(user_invite_code.invite_code)
add_error_to_user("This is not a valid code", user)
+
+ elsif count_greater_than_zero?(user_invite_code.invite_count)
+ add_error_to_user("This code has already been used", user)
+
+ else
+ user_invite_code.invite_count += 1
+ user_invite_code.save
end
end
@@ -10,7 +20,13 @@ class InviteCodeValidator < ActiveModel::Validator
InviteCode.find_by_invite_code(code) == nil
end
+ def count_greater_than_zero?(code)
+ code > 0
+ end
+
def add_error_to_user(error, user)
user.errors[:invite_code] << error
end
-end \ No newline at end of file
+end
+
+