class Spree::Core::NumberGenerator
Constants
- BASE
- DEFAULT_LENGTH
Attributes
length[RW]
prefix[RW]
Public Class Methods
new(options)
click to toggle source
# File lib/spree/core/number_generator.rb, line 9 def initialize(options) @prefix = options.fetch(:prefix) @length = options.fetch(:length, DEFAULT_LENGTH) @letters = options[:letters] end
Public Instance Methods
generate_permalink(host)
click to toggle source
# File lib/spree/core/number_generator.rb, line 27 def generate_permalink(host) host.number_generator.generate_permalink(host) end
included(host)
click to toggle source
# File lib/spree/core/number_generator.rb, line 15 def included(host) generator_instance = self host.class_eval do validates(:number, presence: true, uniqueness: { allow_blank: true }) before_validation do |instance| instance.number ||= generate_permalink(host) end define_singleton_method(:number_generator) { generator_instance } def generate_permalink(host) host.number_generator.generate_permalink(host) end end end
new_candidate(length)
click to toggle source
# File lib/spree/core/number_generator.rb, line 45 def new_candidate(length) characters = @letters ? 36 : 10 @prefix + SecureRandom.random_number(characters**length).to_s(characters).rjust(length, '0').upcase end