Class: Kennel::Models::Record
Constant Summary collapse
- LOCK =
"\u{1F512}"
- READONLY_ATTRIBUTES =
[ :deleted, :id, :created, :created_at, :creator, :org_id, :modified, :modified_at, :api_resource ].freeze
Constants inherited from Base
Base::SETTING_OVERRIDABLE_METHODS
Constants included from SettingsAsMethods
SettingsAsMethods::SETTING_OVERRIDABLE_METHODS
Instance Attribute Summary collapse
-
#project ⇒ Object
readonly
Returns the value of attribute project.
Class Method Summary collapse
Instance Method Summary collapse
- #diff(actual) ⇒ Object
-
#initialize(project, *args) ⇒ Record
constructor
A new instance of Record.
- #resolve_linked_tracking_ids! ⇒ Object
- #tracking_id ⇒ Object
Methods inherited from Base
Methods included from SubclassTracking
#recursive_subclasses, #subclasses
Methods included from SettingsAsMethods
Constructor Details
#initialize(project, *args) ⇒ Record
Returns a new instance of Record.
44 45 46 47 48 |
# File 'lib/kennel/models/record.rb', line 44 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
#project ⇒ Object (readonly)
Returns the value of attribute project.
42 43 44 |
# File 'lib/kennel/models/record.rb', line 42 def project @project end |
Class Method Details
.api_resource_map ⇒ Object
21 22 23 |
# File 'lib/kennel/models/record.rb', line 21 def api_resource_map subclasses.map { |s| [s.api_resource, s] }.to_h end |
.parse_any_url(url) ⇒ Object
13 14 15 16 17 18 19 |
# File 'lib/kennel/models/record.rb', line 13 def parse_any_url(url) subclasses.detect do |s| if id = s.parse_url(url) break s.api_resource, id end end end |
Instance Method Details
#diff(actual) ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/kennel/models/record.rb', line 50 def diff(actual) expected = as_json expected.delete(:id) self.class.send(:normalize, expected, actual) # strict: ignore Integer vs Float # similarity: show diff when not 100% similar # use_lcs: saner output Hashdiff.diff(actual, expected, use_lcs: false, strict: false, similarity: 1) end |
#resolve_linked_tracking_ids! ⇒ Object
66 67 |
# File 'lib/kennel/models/record.rb', line 66 def resolve_linked_tracking_ids!(*) end |
#tracking_id ⇒ Object
62 63 64 |
# File 'lib/kennel/models/record.rb', line 62 def tracking_id "#{project.kennel_id}:#{kennel_id}" end |