app/models/esa/traits/accountable.rb in event_sourced_accounting-0.2.2 vs app/models/esa/traits/accountable.rb in event_sourced_accounting-0.2.3

- old
+ new

@@ -2,12 +2,27 @@ module Traits module Accountable extend ActiveSupport::Concern included do + has_one :esa_state, :as => :accountable, :class_name => ESA::State, dependent: :destroy has_many :esa_events, :as => :accountable, :class_name => ESA::Event.extension_name(self), :extend => ESA::Associations::EventsExtension has_many :esa_flags, :as => :accountable, :class_name => ESA::Flag.extension_name(self), :extend => ESA::Associations::FlagsExtension has_many :esa_transactions, :as => :accountable, :class_name => ESA::Transaction.extension_name(self), :extend => ESA::Associations::TransactionsExtension + + scope :esa_processed_at, lambda { |timespec| + joins("INNER JOIN `esa_states` ON `esa_states`.`accountable_id` = `#{table_name}`.`#{primary_key}` AND `esa_states`.`accountable_type` = '#{self}'"). + where(esa_states: {processed_at: timespec}). + readonly(false) + } + + scope :esa_unprocessed, lambda { + joins("LEFT JOIN `esa_states` ON `esa_states`.`accountable_id` = `#{table_name}`.`#{primary_key}` AND `esa_states`.`accountable_type` = '#{self}'"). + where("`esa_states`.`id` IS NULL"). + readonly(false) + } + + before_destroy :destroy_accountable def esa_ruleset ESA::Ruleset.extension_instance(self)