Sha256: e15e24518f93237a2d4d496c8ee49b6ad87ac3ab9be6c4b67af3a49c13732d71
Contents?: true
Size: 919 Bytes
Versions: 2
Compression:
Stored size: 919 Bytes
Contents
# frozen_string_literal: true require 'active_support' unless defined?(ActiveSupport) module Lite module Uxid module Record module Nanoid extend ActiveSupport::Concern included do before_create :callback_generate_uxid!, if: proc { respond_to?(:uxid) } end class_methods do def find_by_uxid(uxid) find_by(uxid: uxid) end def find_by_uxid!(uxid) record = find_by_uxid(uxid) return record unless record.nil? raise ActiveRecord::RecordNotFound end end private def callback_generate_uxid! random_nanoid = nil loop do random_nanoid = Lite::Uxid::Nanoid.encode break unless self.class.exists?(uxid: random_nanoid) end self.uxid = random_nanoid end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
lite-uxid-1.1.2 | lib/lite/uxid/record/nanoid.rb |
lite-uxid-1.1.1 | lib/lite/uxid/record/nanoid.rb |