Sha256: e7a8b5743288ecaa8437278f609d6bfcd7c2cdb134e4216828bfc6f78b1db92e
Contents?: true
Size: 846 Bytes
Versions: 2
Compression:
Stored size: 846 Bytes
Contents
# lib/uniquify.rb module Uniquify def self.included(base) base.extend ClassMethods end def ensure_unique(name) begin self[name] = yield end while self.class.exists?(name => self[name]) end module ClassMethods def uniquify(*args, &block) options = { :length => 8, :chars => ('a'..'z').to_a + ('A'..'Z').to_a + ('0'..'9').to_a } options.merge!(args.pop) if args.last.kind_of? Hash args.each do |name| before_create do |record| if block record.ensure_unique(name, &block) else record.ensure_unique(name) do Array.new(options[:length]) { options[:chars].to_a[rand(options[:chars].to_a.size)] }.join end end end end end end end class ActiveRecord::Base include Uniquify end
Version data entries
2 entries across 2 versions & 2 rubygems
Version | Path |
---|---|
brettjackson-uniquify-0.1.0 | lib/unquify.rb |
auswalk-uniquify-1.0.0 | lib/uniquify.rb |