Skip to content

Instantly share code, notes, and snippets.

@michaelminter
Created January 26, 2017 21:52
Show Gist options
  • Save michaelminter/1a3f848d6e7dcf0cdbe5acb865b28ad4 to your computer and use it in GitHub Desktop.
Save michaelminter/1a3f848d6e7dcf0cdbe5acb865b28ad4 to your computer and use it in GitHub Desktop.
Generate random token on create
# app/models/model_name.rb
class ModelName < ActiveRecord::Base
include Tokenable
end
# app/models/concerns/tokenable.rb
module Tokenable
extend ActiveSupport::Concern
included do
before_create :generate_token
end
protected
def generate_token
self.token = loop do
random_token = SecureRandom.urlsafe_base64(nil, false)
break random_token unless self.class.exists?(token: random_token)
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment