module HasTokenable::Concern::ClassMethods

Public Instance Methods

default_token_options() click to toggle source

Default options as well as an overwrite point so you can assign different defaults to different models

# File lib/has_tokenable/concern.rb, line 26
def default_token_options
  @default_token_options ||= begin
    options = HasTokenable.default_token_options
    options[:prefix] ||= self.name[0, 1]
    options
  end
end
generate_method(options) click to toggle source
# File lib/has_tokenable/concern.rb, line 34
def generate_method(options)
  args = [ options[:method_random], options[:length].to_i ]
  
  args.slice!(-1) if options[:method_random] == 'uuid'

  SecureRandom.send(*args)
end
generate_unique_token() click to toggle source

Generates a unique token based on the options

# File lib/has_tokenable/concern.rb, line 43
def generate_unique_token
  record, options = true, @has_tokenable_options
  conditions = {}

  token = loop do
    random_token = self.generate_method(options)

    conditions[options[:param_name].to_sym] = random_token

    break random_token unless self.exists?(conditions)
  end

  token
end
method_random=(value) click to toggle source
# File lib/has_tokenable/concern.rb, line 17
def method_random=(value)
  values = value.is_a?(Array) ? value : [value]
  values.map! { |v| v.to_s }
  
  raise ArgumentError.new('Method is not supported') if (values - METHODS).size > 0
  values
end