module UniqToken::ClassMethods

Public Instance Methods

unique_token(field, options) click to toggle source
# File lib/uniq_token.rb, line 12
def unique_token field, options
  prefix = options[:prefix].present? ? options[:prefix] : ''
  length = options[:length].to_i > 0 ? options[:length].to_i : 64
  suffix = options[:suffix].present? ? options[:suffix] : ''

  before_validation { |record|
    if record[field].blank?
      record[field] = loop do
        random_token = "#{prefix}#{random_str(length)}#{suffix}"
        break random_token unless record.class.exists?("#{field}": random_token)
      end
    end
  }
end