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