Class: ExternalServices::ApiAction

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/external_services/api_action.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.perform_unprocessed ⇒ Object



52
53
54
55
56
# File 'app/models/external_services/api_action.rb', line 52

def self.perform_unprocessed
  Rails.logger.info "Running unprocessed #{self.class.name.demodulize} api actions..."

  unprocessed.each(&:kick_active_job)
end

Instance Method Details

#api_disabled? ⇒ Boolean

Returns:

  • (Boolean)


34
35
36
# File 'app/models/external_services/api_action.rb', line 34

def api_disabled?
  initiator_class.send(:"#{self.class.to_s.demodulize.underscore}_api_disabled")
end

#change_external_id? ⇒ Boolean

Returns:

  • (Boolean)


38
39
40
# File 'app/models/external_services/api_action.rb', line 38

def change_external_id?
  options['change_external_id']
end

#execute! ⇒ Object

Raises:

  • (NotImplementedError)


58
59
60
# File 'app/models/external_services/api_action.rb', line 58

def execute!
  raise NotImplementedError
end

#initiator_class ⇒ Object



29
30
31
32
# File 'app/models/external_services/api_action.rb', line 29

def initiator_class
  # Need to use initiator object for STI in polymorphic.. But still will be bugs with deleted STI object
  initiator.try(:class) || initiator_type.constantize
end

#job_class ⇒ Object



42
43
44
# File 'app/models/external_services/api_action.rb', line 42

def job_class
  "ExternalServices::#{self.class.to_s.demodulize}ApiJob".constantize
end

#kick_active_job ⇒ Object



46
47
48
49
50
# File 'app/models/external_services/api_action.rb', line 46

def kick_active_job
  return if api_disabled?

  job_class.set(queue: queue).perform_later(id)
end

#processed? ⇒ Boolean

Returns:

  • (Boolean)


21
22
23
# File 'app/models/external_services/api_action.rb', line 21

def processed?
  processed_at.present?
end

#set_processed! ⇒ Object



25
26
27
# File 'app/models/external_services/api_action.rb', line 25

def set_processed!
  update_attributes! processed_at: Time.now
end