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