Class: MessagingLog

Inherits:
ApplicationRecord show all
Defined in:
app/models/messaging_log.rb

Overview

== Schema Information

Table name: messaging_logs
Database name: primary

id :integer not null, primary key
category :string not null
message :jsonb
resource_type :string
created_at :datetime
resource_id :integer

Indexes

index_messaging_logs_on_category (category)
index_messaging_logs_on_created_at (created_at) USING brin
index_messaging_logs_on_resource_type (resource_type)
rsrc_id_rsrc_type (resource_id,resource_type)

Constant Summary

Constants included from Models::Schedulable

Models::Schedulable::SIMPLE_FORM_OPTIONS

Instance Attribute Summary collapse

Belongs to collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from ApplicationRecord

ransackable_associations, ransackable_attributes, ransackable_scopes, ransortable_attributes, #to_relation

Methods included from Models::Schedulable

config

Methods included from Models::AfterCommittable

#after_commit

Methods included from Models::EventPublishable

#publish_event

Instance Attribute Details

#categoryString

Returns Log category, currently only shipping_rate_request.

Returns:

  • (String)

    Log category, currently only shipping_rate_request.



29
# File 'app/models/messaging_log.rb', line 29

validates :category, presence: true, inclusion: { in: ['shipping_rate_request'] }

Class Method Details

.last_shipping_rate_message_error(rel) ⇒ String?

Pass a scoped relation, e.g. quote.messaging_logs

Parameters:

  • rel (ActiveRecord::Relation)

    messaging log relation to search

Returns:

  • (String, nil)


47
48
49
50
51
52
# File 'app/models/messaging_log.rb', line 47

def self.last_shipping_rate_message_error(rel)
  ml = rel.shipping_rate_requests.most_recent_first.first
  if ml && (err_msgs = [ml.message].flatten.compact.filter_map { |m| m['message'].presence }).present?
    err_msgs.join('. ')[0..255]
  end
end

.most_recent_firstActiveRecord::Relation<MessagingLog>

A relation of MessagingLogs that are most recent first. Active Record Scope

Returns:

See Also:



34
# File 'app/models/messaging_log.rb', line 34

scope :most_recent_first, -> { order(:id).reverse_order }

.non_okActiveRecord::Relation<MessagingLog>

A relation of MessagingLogs that are non ok. Active Record Scope

Returns:

See Also:



32
# File 'app/models/messaging_log.rb', line 32

scope :non_ok, -> { where("message ->> 'code' <> 'ok'") }

.shipping_rate_requestsActiveRecord::Relation<MessagingLog>

A relation of MessagingLogs that are shipping rate requests. Active Record Scope

Returns:

See Also:



31
# File 'app/models/messaging_log.rb', line 31

scope :shipping_rate_requests, -> { where(category: 'shipping_rate_request') }

.with_messageActiveRecord::Relation<MessagingLog>

A relation of MessagingLogs that are with message. Active Record Scope

Returns:

See Also:



33
# File 'app/models/messaging_log.rb', line 33

scope :with_message, -> { where("message ->> 'message' <> ''") }

Instance Method Details

#full_messageString?

Returns:

  • (String, nil)


37
38
39
40
41
# File 'app/models/messaging_log.rb', line 37

def full_message
  [message].flatten.pluck('message').join('. ')
rescue StandardError
  nil
end

#resourceActiveRecord::Base

Returns:

  • (ActiveRecord::Base)


23
# File 'app/models/messaging_log.rb', line 23

belongs_to :resource, polymorphic: true, optional: true