Sha256: 9b304b868d0d2a189281ebb86fa8073806ec90d18320f43b4521e621d62043ab
Contents?: true
Size: 926 Bytes
Versions: 2
Compression:
Stored size: 926 Bytes
Contents
require 'securerandom' module Sequel module Plugins module NonsequentialId def self.configure(model, opts = {}) model.instance_eval do @id_field = opts[:id_field] || :id end end module ClassMethods attr_reader :id_field Sequel::Plugins.inherited_instance_variables(self, :@id_field => nil) end module InstanceMethods def around_create begin set_nonsequential_id super rescue Sequel::UniqueConstraintViolation => e if e.message =~ /\b#{model.table_name}\.#{model.id_field}\b/ retry else raise end end end private def set_nonsequential_id method = :"#{model.id_field}=" id = SecureRandom.hex.hex.to_s(36) set_column_value(method, id) end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
sequel-nonsequential_id-1.2.0 | lib/sequel/plugins/nonsequential_id.rb |
sequel-nonsequential_id-1.0.1 | lib/sequel/plugins/nonsequential_id.rb |