Module: Workflow::Adapter::ActiveRecord::Scopes
- Defined in:
- lib/workflow/adapters/active_record.rb
Overview
This module will automatically generate ActiveRecord scopes based on workflow states.
The name of each generated scope will be something like with_<state_name>_state
Examples:
Article.with_pending_state # => ActiveRecord::Relation
Payment.without_refunded_state # => ActiveRecord::Relation
Example above just addswhere(:state_column_name => 'pending')or
where.not(:state_column_name => 'pending')` to AR query and returns
ActiveRecord::Relation.
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.extended(object) ⇒ Object
55 56 57 58 59 60 |
# File 'lib/workflow/adapters/active_record.rb', line 55 def self.extended(object) class << object alias_method :workflow_without_scopes, :workflow unless method_defined?(:workflow_without_scopes) alias_method :workflow, :workflow_with_scopes end end |
Instance Method Details
#workflow_with_scopes(&specification) ⇒ Object
62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/workflow/adapters/active_record.rb', line 62 def workflow_with_scopes(&specification) workflow_without_scopes(&specification) states = workflow_spec.states states.map(&:name).each do |state| define_singleton_method("with_#{state}_state") do where(self.workflow_column.to_sym => state.to_s) end define_singleton_method("without_#{state}_state") do where.not(self.workflow_column.to_sym => state.to_s) end end end |