Class: Kennel::Models::Record

Inherits:
Base
  • Object
show all
Defined in:
lib/kennel/models/record.rb

Direct Known Subclasses

Dashboard, Monitor, Slo

Constant Summary collapse

LOCK =
"\u{1F512}"
READONLY_ATTRIBUTES =
[
  :deleted, :id, :created, :created_at, :creator, :org_id, :modified, :modified_at, :api_resource
].freeze
API_LIST_INCOMPLETE =
false

Constants inherited from Base

Base::SETTING_OVERRIDABLE_METHODS

Constants included from SettingsAsMethods

SettingsAsMethods::SETTING_OVERRIDABLE_METHODS

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Base

#kennel_id, #name, #to_json

Methods included from SubclassTracking

#recursive_subclasses, #subclasses

Methods included from SettingsAsMethods

included

Constructor Details

#initialize(project, *args) ⇒ Record

Returns a new instance of Record.

Raises:

  • (ArgumentError)


33
34
35
36
37
# File 'lib/kennel/models/record.rb', line 33

def initialize(project, *args)
  raise ArgumentError, "First argument must be a project, not #{project.class}" unless project.is_a?(Project)
  @project = project
  super(*args)
end

Instance Attribute Details

#projectObject (readonly)

Returns the value of attribute project.



31
32
33
# File 'lib/kennel/models/record.rb', line 31

def project
  @project
end

Instance Method Details

#diff(actual) ⇒ Object



39
40
41
42
43
44
45
46
# File 'lib/kennel/models/record.rb', line 39

def diff(actual)
  expected = as_json
  expected.delete(:id)

  self.class.send(:normalize, expected, actual)

  HashDiff.diff(actual, expected, use_lcs: false)
end

#resolve_linked_tracking_idsObject



52
53
# File 'lib/kennel/models/record.rb', line 52

def resolve_linked_tracking_ids(*)
end

#tracking_idObject



48
49
50
# File 'lib/kennel/models/record.rb', line 48

def tracking_id
  "#{project.kennel_id}:#{kennel_id}"
end