Module: StateShifter::Definition::ActiveRecordIntegrationMethods
- Defined in:
- lib/state_shifter/definition/active_record_integration_methods.rb
Class Method Summary collapse
Instance Method Summary collapse
- #check_attr_presence ⇒ Object
- #get_current_state ⇒ Object
- #set_current_state(value) ⇒ Object
- #write_initial_state ⇒ Object
Class Method Details
.include_state_scopes(base) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/state_shifter/definition/active_record_integration_methods.rb', line 7 def self.include_state_scopes(base) base.state_machine_definition.states.each do |name, definition| base.class_eval do scope name, -> { where(persist_attr_name => name) } unless respond_to?(name) end end base.state_machine_definition..each do |name, states| base.class_eval do scope name, -> { where(persist_attr_name => states) } unless respond_to?(name) end end end |
Instance Method Details
#check_attr_presence ⇒ Object
21 22 23 |
# File 'lib/state_shifter/definition/active_record_integration_methods.rb', line 21 def check_attr_presence raise StatePersistenceAttributeNotPresent unless self.attribute_names.include? self.class.persist_attr_name.to_s end |
#get_current_state ⇒ Object
25 26 27 28 |
# File 'lib/state_shifter/definition/active_record_integration_methods.rb', line 25 def get_current_state check_attr_presence read_attribute self.class.persist_attr_name end |
#set_current_state(value) ⇒ Object
30 31 32 33 |
# File 'lib/state_shifter/definition/active_record_integration_methods.rb', line 30 def set_current_state value check_attr_presence update_attribute self.class.persist_attr_name, value end |
#write_initial_state ⇒ Object
35 36 37 38 |
# File 'lib/state_shifter/definition/active_record_integration_methods.rb', line 35 def write_initial_state raise StatePersistenceAttributeNotPresent unless self.attribute_names.include?(self.class.persist_attr_name.to_s) write_attribute self.class.persist_attr_name, self.class.state_machine_definition.initial_state.name.to_sym end |