Module: Statesman::Adapters::ActiveRecordQueries::ClassMethods

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

Instance Method Summary collapse

Instance Method Details

#in_state(*states) ⇒ Object



9
10
11
12
13
14
# File 'lib/statesman/adapters/active_record_queries.rb', line 9

def in_state(*states)
  states = states.flatten.map(&:to_s)

  joins(most_recent_transition_join).
    where(states_where(most_recent_transition_alias, states), states)
end

#most_recent_transition_joinObject



24
25
26
27
28
29
# File 'lib/statesman/adapters/active_record_queries.rb', line 24

def most_recent_transition_join
  "LEFT OUTER JOIN #{model_table} AS #{most_recent_transition_alias}
     ON #{table_name}.id =
          #{most_recent_transition_alias}.#{model_foreign_key}
     AND #{most_recent_transition_alias}.most_recent = #{db_true}"
end

#not_in_state(*states) ⇒ Object



16
17
18
19
20
21
22
# File 'lib/statesman/adapters/active_record_queries.rb', line 16

def not_in_state(*states)
  states = states.flatten.map(&:to_s)

  joins(most_recent_transition_join).
    where("NOT (#{states_where(most_recent_transition_alias, states)})",
          states)
end