Skip to content

Instantly share code, notes, and snippets.

@stuartbates
Created January 31, 2014 09:50
Show Gist options
  • Save stuartbates/8729208 to your computer and use it in GitHub Desktop.
Save stuartbates/8729208 to your computer and use it in GitHub Desktop.
Generating random barcodes
class Barcode < ActiveRecord::Base
validates_presence_of :code
validates_uniqueness_of :code
validates_length_of :code, :is => 8
def generate_random_code
"#{self.batch}#{self.letters}#{self.numbers}"
end
def set_random_code
self.code = generate_random_code
end
class << self
def generate_barcodes(letter, batch_size)
batch_size.times do
self.generate_barcode(letter)
end
end
def generate_barcode(letter)
barcode = self.new_for_batch(letter)
until barcode.valid? do
barcode.set_random_code
end
barcode.save!
end
def new_for_batch(letter)
barcode = self.new({:batch => letter})
barcode.set_random_code
barcode
end
end
protected
def letters
(0...3).map { (65 + rand(26)).chr }.join
end
def numbers
'%04d' % rand(0...10000)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment