Sha256: 9a8ed984715ec2f9653c00f241ad4663e8339a81bcfd226bee1e2198baedb560
Contents?: true
Size: 1.34 KB
Versions: 3
Compression:
Stored size: 1.34 KB
Contents
require 'state_machine' require 'active_record' module ClickSession class SessionState < ActiveRecord::Base validates :model_record, presence: true state_machine initial: :active do state :active, value: 0 state :processed, value: 1 state :success_reported, value: 10 state :failed_to_process, value: 2 state :failure_reported, value: 20 event :success do transition active: :processed end event :failure do transition active: :failed_to_process end event :reported_back do transition processed: :success_reported, failed_to_process: :failure_reported end end def model=(model) set_model_record_for(model) end def model @model ||= model_class.find_by_id(self.model_record) end def webhook_attempt_failed self.webhook_attempts += 1 end private delegate :model_class, to: :clicksession_configuration def set_model_record_for(model) if model.is_a? Integer self.model_record = model else set_active_record_model_id_for(model) end end def set_active_record_model_id_for(model) if model.new_record? model.save! end self.model_record = model.id end def clicksession_configuration ClickSession.configuration end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
click_session-0.1.1 | lib/click_session/session_state.rb |
click_session-0.1.0 | lib/click_session/session_state.rb |
click_session-0.0.1 | lib/click_session/session_state.rb |