Sha256: d732b9fb75578fb0a1a1feddde442ba0edf74ab9149e2e677258a6a480046045
Contents?: true
Size: 1.4 KB
Versions: 1
Compression:
Stored size: 1.4 KB
Contents
require "uuidtools" require "activerecord_uuid_as_pk/version" module ActiveRecordUUIDAsPK require "activerecord_uuid_as_pk/railtie" if defined?(Rails) def self.included(base) base.send :extend, ClassMethods end module ClassMethods def uuid_as_primary_key() self.primary_key = "uuid" define_method "formatted_id" do return self.id.present? ? UUIDTools::UUID.parse_raw(self.id).to_s : nil end define_method "hex_id" do return self.id.present? ? UUIDTools::UUID.parse_raw(self.id).hexdigest : nil end before_create do if self.id.nil? self.id = UUIDTools::UUID.timestamp_create.raw elsif self.id.is_a?(UUIDTools::UUID) self.id = self.id.raw elsif self.id.is_a?(String) if self.id.size != 16 if self.id =~ /^([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{2})([0-9a-f]{2})-([0-9a-f]{12})$/ self.id = UUIDTools::UUID.parse(self.id).raw else self.id = UUIDTools::UUID.timestamp_create.raw end end else self.id = UUIDTools::UUID.timestamp_create.raw end end (class << self; self end).class_eval do define_method "find_by_formatted_id" do |uuid| raw_uuid = UUIDTools::UUID.parse(uuid).raw return self.find_by_uuid(raw_uuid) end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
activerecord_uuid_as_pk-1.0.0 | lib/activerecord_uuid_as_pk.rb |