Class: ActiveRecord::Type::Uuid::Data

Inherits:
Object
  • Object
show all
Defined in:
lib/active_record-mysql-uuid_column/type_class.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(display_format, storage_format) ⇒ Data

Returns a new instance of Data.



46
47
48
# File 'lib/active_record-mysql-uuid_column/type_class.rb', line 46

def initialize(display_format, storage_format)
  @display_format, @storage_format = display_format, storage_format
end

Class Method Details

.from_database(value) ⇒ Object



55
56
57
58
59
60
61
62
63
# File 'lib/active_record-mysql-uuid_column/type_class.rb', line 55

def self.from_database(value)
  return value if value.is_a? Data

  storage_format = value.unpack('H*').first.rjust(32, '0')
  new(
    storage_format.gsub(/^(.{8})(.{4})(.{4})(.{4})(.{12})$/, '\1-\2-\3-\4-\5'),
    storage_format
  )
end

.from_uuid_string(uuid) ⇒ Object



50
51
52
53
# File 'lib/active_record-mysql-uuid_column/type_class.rb', line 50

def self.from_uuid_string(uuid)
  return nil if uuid.nil?
  new(uuid, uuid.downcase.gsub(/[^a-f0-9]/, ''))
end

Instance Method Details

#==(other) ⇒ Object



74
75
76
# File 'lib/active_record-mysql-uuid_column/type_class.rb', line 74

def ==(other)
  other == to_s || super
end

#hexObject



70
71
72
# File 'lib/active_record-mysql-uuid_column/type_class.rb', line 70

def hex
  @storage_format
end

#to_sObject Also known as: to_str



65
66
67
# File 'lib/active_record-mysql-uuid_column/type_class.rb', line 65

def to_s
  @display_format
end