metamaps/metamaps

View on GitHub
app/models/token.rb

Summary

Maintainability
A
0 mins
Test Coverage
# frozen_string_literal: true

class Token < ApplicationRecord
  belongs_to :user

  before_create :assign_token

  CHARS = 32

  private

  def assign_token
    self.token = generate_token
  end

  def generate_token
    loop do
      candidate = SecureRandom.base64(CHARS).gsub(/\W/, '')
      return candidate[0...CHARS] if candidate.size >= CHARS
    end
  end
end