Method: Recognition::Models::Redeemable#regenerate_code

Defined in:
lib/recognition/models/redeemable.rb

#regenerate_codeObject



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/recognition/models/redeemable.rb', line 4

def regenerate_code
  self.class.recognitions[:code_length] = 10 if self.class.recognitions[:code_length].nil?
  prefix = Recognition::Parser.parse_code_part(self.class.recognitions[:prefix], self)
  suffix = Recognition::Parser.parse_code_part(self.class.recognitions[:suffix], self)
  l = (self.class.recognitions[:code_length] - (prefix.length + suffix.length))
  dict = [('a'..'z'),('A'..'Z'),(0..9)].map{|i| i.to_a}.flatten
  code = (1..l).map{ dict[rand(dict.length)] }.prepend(prefix).append(suffix).join
  # Prevent code collision at all costs
  if self.class.to_s.constantize.find_all_by_code(code).any?
    regenerate_code
  else
    self.code = code
    self
  end
end