Files
dunlop-core/app/models/concerns/has_uuid_identifier.rb
T
2018-01-20 13:02:44 -03:00

26 lines
558 B
Ruby

module HasUuidIdentifier
UUID_MATCH = /^[0-9A-F]{8}-[0-9A-F]{4}-(?<version>[1-5])[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i
extend ActiveSupport::Concern
included do
before_save :ensure_identifier
end
module ClassMethods
def find(*args)
finder = args.first
if finder.is_a?(String) and finder.length == 36 and finder =~ UUID_MATCH
find_by(identifier: finder)
else
super
end
end
end
private
def ensure_identifier
self.identifier ||= UUIDTools::UUID.timestamp_create.to_s
end
end