class Decidim::Meetings::Registrations::CodeGenerator

This class handles the generation of meeting registration codes

def choose(length)

def choose(length)
  limit = ALPHABET.size
  (1..length).map do
    ALPHABET[SecureRandom.random_number(limit)]
  end.join
end

def generate(registration)

def generate(registration)
  loop do
    registration_code = choose(@length)
    # Use the random number if no other registration exists with it.
    break registration_code unless registration.class.exists?(meeting: registration.meeting, code: registration_code)
  end
end

def initialize(options = {})

def initialize(options = {})
  @length = options[:length] || LENGTH
end