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)

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::EventPublishable

#publish_event

Instance Attribute Details

#categoryObject (readonly)



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

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

Class Method Details

.last_shipping_rate_message_error(rel) ⇒ Object

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



38
39
40
41
42
43
44
45
# File 'app/models/messaging_log.rb', line 38

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

.most_recent_firstActiveRecord::Relation<MessagingLog>

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

Returns:

See Also:



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

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:



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

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:



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

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:



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

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

Instance Method Details

#full_messageObject



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

def full_message
  [message].flatten.map{|m| m['message']}.join('. ') rescue nil
end

#resourceResource

Returns:

  • (Resource)

See Also:



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

belongs_to :resource, polymorphic: true, optional: true