Class: Statesman::Adapters::ActiveRecordQueries::QueryBuilder
- Inherits:
-
Object
- Object
- Statesman::Adapters::ActiveRecordQueries::QueryBuilder
- Defined in:
- lib/statesman/adapters/active_record_queries.rb
Instance Method Summary collapse
-
#initialize(model, transition_class:, initial_state:, most_recent_transition_alias: nil, transition_name: nil) ⇒ QueryBuilder
constructor
A new instance of QueryBuilder.
- #most_recent_transition_join ⇒ Object
- #states_where(states) ⇒ Object
Constructor Details
#initialize(model, transition_class:, initial_state:, most_recent_transition_alias: nil, transition_name: nil) ⇒ QueryBuilder
Returns a new instance of QueryBuilder.
85 86 87 88 89 90 91 92 93 |
# File 'lib/statesman/adapters/active_record_queries.rb', line 85 def initialize(model, transition_class:, initial_state:, most_recent_transition_alias: nil, transition_name: nil) @model = model @transition_class = transition_class @initial_state = initial_state @most_recent_transition_alias = most_recent_transition_alias @transition_name = transition_name end |
Instance Method Details
#most_recent_transition_join ⇒ Object
105 106 107 108 109 110 |
# File 'lib/statesman/adapters/active_record_queries.rb', line 105 def most_recent_transition_join "LEFT OUTER JOIN #{model_table} AS #{most_recent_transition_alias} " \ "ON #{model.table_name}.id = " \ "#{most_recent_transition_alias}.#{model_foreign_key} " \ "AND #{most_recent_transition_alias}.most_recent = #{db_true}" end |
#states_where(states) ⇒ Object
95 96 97 98 99 100 101 102 103 |
# File 'lib/statesman/adapters/active_record_queries.rb', line 95 def states_where(states) if initial_state.to_s.in?(states.map(&:to_s)) "#{most_recent_transition_alias}.to_state IN (?) OR " \ "#{most_recent_transition_alias}.to_state IS NULL" else "#{most_recent_transition_alias}.to_state IN (?) AND " \ "#{most_recent_transition_alias}.to_state IS NOT NULL" end end |