Module: Metajp::ActsAsInvitable::InstanceMethods
- Defined in:
- lib/metajp/shared/acts_as_invitable/model.rb
Instance Method Summary collapse
-
#active_code? ⇒ Boolean
makes sure the code is unique.
- #before_validation ⇒ Object
-
#generate_code(code_length = 6) ⇒ Object
Generates an alphanumeric code using an MD5 hash *
code_length
- number of characters to return. -
#generate_unique_code ⇒ Object
Generates unique code based on
generate_code
method. - #redeem! ⇒ Object
Instance Method Details
#active_code? ⇒ Boolean
makes sure the code is unique
65 66 67 |
# File 'lib/metajp/shared/acts_as_invitable/model.rb', line 65 def active_code? Invitation.first(:conditions => { :code => self.code }) end |
#before_validation ⇒ Object
45 46 47 |
# File 'lib/metajp/shared/acts_as_invitable/model.rb', line 45 def before_validation self.generate_unique_code if self.code.blank? end |
#generate_code(code_length = 6) ⇒ Object
Generates an alphanumeric code using an MD5 hash
-
code_length
- number of characters to return
51 52 53 54 55 |
# File 'lib/metajp/shared/acts_as_invitable/model.rb', line 51 def generate_code(code_length=6) chars = ("a".."z").to_a + ("1".."9").to_a new_code = Array.new(code_length, '').collect{chars[rand(chars.size)]}.join Digest::MD5.hexdigest(new_code)[0..(code_length-1)].upcase end |
#generate_unique_code ⇒ Object
Generates unique code based on generate_code
method
58 59 60 61 62 |
# File 'lib/metajp/shared/acts_as_invitable/model.rb', line 58 def generate_unique_code begin self.code = generate_code(10) end until !self.active_code? end |
#redeem! ⇒ Object
40 41 42 43 |
# File 'lib/metajp/shared/acts_as_invitable/model.rb', line 40 def redeem! self.quantity -= 1 self.save end |