Module: Metajp::ActsAsInvitable::InstanceMethods

Defined in:
lib/metajp/shared/acts_as_invitable/model.rb

Instance Method Summary collapse

Instance Method Details

#active_code?Boolean

makes sure the code is unique

Returns:

  • (Boolean)


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_validationObject



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_codeObject

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