Module: Statesman::Adapters::ActiveRecordQueries

Defined in:
lib/statesman/adapters/active_record_queries.rb

Defined Under Namespace

Classes: ClassMethods, QueryBuilder

Class Method Summary collapse

Class Method Details

.[](**args) ⇒ Object



32
33
34
# File 'lib/statesman/adapters/active_record_queries.rb', line 32

def self.[](**args)
  ClassMethods.new(**args)
end

.check_missing_methods!(base) ⇒ Object

Raises:

  • (NotImplementedError)


6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/statesman/adapters/active_record_queries.rb', line 6

def self.check_missing_methods!(base)
  missing_methods = %i[transition_class initial_state].
    reject { |m| base.respond_to?(m) }
  return if missing_methods.none?

  raise NotImplementedError,
        "#{missing_methods.join(', ')} method(s) should be defined on " \
        "the model. Alternatively, use the new form of `include " \
        "Statesman::Adapters::ActiveRecordQueries[" \
        "transition_class: MyTransition, " \
        "initial_state: :some_state]`"
end

.included(base) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/statesman/adapters/active_record_queries.rb', line 19

def self.included(base)
  check_missing_methods!(base)

  base.include(
    ClassMethods.new(
      transition_class: base.transition_class,
      initial_state: base.initial_state,
      most_recent_transition_alias: base.try(:most_recent_transition_alias),
      transition_name: base.try(:transition_name),
    ),
  )
end