module Mongoid::Token::ClassMethods

Public Instance Methods

initialize_copy(source) click to toggle source
Calls superclass method
# File lib/mongoid/token.rb, line 12
def initialize_copy(source)
  super(source)
  self.token = nil
end
token(*args) click to toggle source
# File lib/mongoid/token.rb, line 17
def token(*args)
  options = Mongoid::Token::Options.new(args.extract_options!)

  add_token_field_and_index(options)
  add_token_collision_resolver(options)
  set_token_callbacks(options)

  define_custom_finders(options) if options.skip_finders? == false
  override_to_param(options) if options.override_to_param?
end

Private Instance Methods

add_token_collision_resolver(options) click to toggle source
# File lib/mongoid/token.rb, line 34
def add_token_collision_resolver(options)
  resolver = Mongoid::Token::CollisionResolver.new(self, options.field_name, options.retry_count)
  resolver.create_new_token = Proc.new do |document|
    document.send(:create_token, options.field_name, options.pattern)
  end
end
add_token_field_and_index(options) click to toggle source
# File lib/mongoid/token.rb, line 29
def add_token_field_and_index(options)
  self.field options.field_name, :type => String, :default => default_value(options)
  self.index({ options.field_name => 1 }, { :unique => true, :sparse => true })
end
default_value(options) click to toggle source
# File lib/mongoid/token.rb, line 61
def default_value(options)
  options.generate_on_init && Mongoid::Token::Generator.generate(options.pattern) || nil
end
define_custom_finders(options) click to toggle source
# File lib/mongoid/token.rb, line 41
def define_custom_finders(options)
  Finders.define_custom_token_finder_for(self, options.field_name)
end
override_to_param(options) click to toggle source
Calls superclass method
# File lib/mongoid/token.rb, line 55
def override_to_param(options)
  self.send(:define_method, :to_param) do
    self.send(options.field_name) || super()
  end
end
set_token_callbacks(options) click to toggle source
# File lib/mongoid/token.rb, line 45
def set_token_callbacks(options)
  set_callback(:create, :before) do |document|
    document.create_token_if_nil options.field_name, options.pattern
  end

  set_callback(:save, :before) do |document|
    document.create_token_if_nil options.field_name, options.pattern
  end
end