Class: ExternalId::Value

Inherits:
Object
  • Object
show all
Includes:
ActiveModel::Attributes, ActiveModel::Model
Defined in:
lib/external_id/models/value.rb

Overview

ID Value value object

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(provider: nil, id: nil) ⇒ Value

Returns a new instance of Value.



37
38
39
40
# File 'lib/external_id/models/value.rb', line 37

def initialize(provider: nil, id: nil)
  @provider = provider.present? ? provider.to_s : provider
  @id = id.present? ? id.to_s : id
end

Instance Attribute Details

#idObject

Returns the value of attribute id.



9
10
11
# File 'lib/external_id/models/value.rb', line 9

def id
  @id
end

#providerObject

Returns the value of attribute provider.



9
10
11
# File 'lib/external_id/models/value.rb', line 9

def provider
  @provider
end

Class Method Details

.blankObject



14
15
16
# File 'lib/external_id/models/value.rb', line 14

def self.blank
  new
end

.from_array(array) ⇒ Object

Create from array format [provider, id]



29
30
31
32
33
34
35
# File 'lib/external_id/models/value.rb', line 29

def self.from_array(array)
  return blank if array.blank? || !array.is_a?(Array) || array.size != 2

  provider, id = array

  new(provider: provider, id: id)
end

.from_model(external_id_model) ⇒ Object

Create from ExternalId model



19
20
21
22
23
24
25
26
# File 'lib/external_id/models/value.rb', line 19

def self.from_model(external_id_model)
  return blank if external_id_model.blank?

  new(
    provider: external_id_model.provider,
    id: external_id_model.external_id
  )
end

Instance Method Details

#==(other) ⇒ Object



50
51
52
53
54
# File 'lib/external_id/models/value.rb', line 50

def ==(other)
  return false unless other.is_a?(::ExternalId::Value)

  provider == other.provider && id == other.id
end

#blank?Boolean

Returns:

  • (Boolean)


46
47
48
# File 'lib/external_id/models/value.rb', line 46

def blank?
  !present?
end

#present?Boolean

Returns:

  • (Boolean)


42
43
44
# File 'lib/external_id/models/value.rb', line 42

def present?
  provider.present? && id.present?
end

#to_aObject



74
75
76
77
78
# File 'lib/external_id/models/value.rb', line 74

def to_a
  return [] if blank?

  [provider, id]
end

#to_hashObject Also known as: attributes



62
63
64
65
66
67
68
69
# File 'lib/external_id/models/value.rb', line 62

def to_hash
  return {} if blank?

  {
    provider: provider,
    id: id
  }
end

#to_sObject



56
57
58
59
60
# File 'lib/external_id/models/value.rb', line 56

def to_s
  return '' if blank?

  "#{provider}:#{id}"
end