Class: InventoryRefresh::Target

Inherits:
Object
  • Object
show all
Defined in:
lib/inventory_refresh/target.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(association:, manager_ref:, manager: nil, manager_id: nil, event_id: nil, options: {}) ⇒ Target



13
14
15
16
17
18
19
20
21
22
# File 'lib/inventory_refresh/target.rb', line 13

def initialize(association:, manager_ref:, manager: nil, manager_id: nil, event_id: nil, options: {})
  raise "Provide either :manager or :manager_id argument" if manager.nil? && manager_id.nil?

  @manager     = manager
  @manager_id  = manager_id
  @association = association
  @manager_ref = manager_ref
  @event_id    = event_id
  @options     = options
end

Instance Attribute Details

#associationObject (readonly)

Returns the value of attribute association.



3
4
5
# File 'lib/inventory_refresh/target.rb', line 3

def association
  @association
end

#event_idObject (readonly)

Returns the value of attribute event_id.



3
4
5
# File 'lib/inventory_refresh/target.rb', line 3

def event_id
  @event_id
end

#manager_refObject (readonly) Also known as: name

Returns the value of attribute manager_ref.



3
4
5
# File 'lib/inventory_refresh/target.rb', line 3

def manager_ref
  @manager_ref
end

#optionsObject (readonly)

Returns the value of attribute options.



3
4
5
# File 'lib/inventory_refresh/target.rb', line 3

def options
  @options
end

Class Method Details

.dump(obj) ⇒ Hash

A Rails recommended interface for serializing an object



34
35
36
# File 'lib/inventory_refresh/target.rb', line 34

def self.dump(obj)
  obj.dump
end

.load(*args) ⇒ InventoryRefresh::Target

A Rails recommended interface for deserializing an object



26
27
28
# File 'lib/inventory_refresh/target.rb', line 26

def self.load(*args)
  new(*args)
end

Instance Method Details

#dumpHash Also known as: id

Returns a serialized InventoryRefresh::Target object. This can be used to initialize a new object, then the object target acts the same as the object InventoryRefresh::Target.new(target.serialize)



42
43
44
45
46
47
48
49
50
# File 'lib/inventory_refresh/target.rb', line 42

def dump
  {
    :manager_id  => manager_id,
    :association => association,
    :manager_ref => manager_ref,
    :event_id    => event_id,
    :options     => options
  }
end

#load_from_dbApplicationRecord

Loads InventoryRefresh::Target ApplicationRecord representation from our DB, this requires that InventoryRefresh::Target has been refreshed, otherwise the AR object can be missing.



69
70
71
# File 'lib/inventory_refresh/target.rb', line 69

def load_from_db
  manager.public_send(association).find_by(manager_ref)
end

#managerManageIQ::Providers::BaseManager



56
57
58
# File 'lib/inventory_refresh/target.rb', line 56

def manager
  @manager || ManageIQ::Providers::BaseManager.find(@manager_id)
end

#manager_idInteger



61
62
63
# File 'lib/inventory_refresh/target.rb', line 61

def manager_id
  @manager_id || manager.try(:id)
end