module StateManager::Adapters::ActiveRecord::ResourceMethods::ClassMethods
Public Instance Methods
state_manager_added(property, klass, options)
click to toggle source
# File lib/state_manager/adapters/active_record.rb, line 24 def state_manager_added(property, klass, options) class_eval do klass.specification.states.each do |state, specification_klass| # The connection might not be ready when defining this code is # reached so we wrap in a lamda. scope state, lambda { conn = ::ActiveRecord::Base.connection table = conn.quote_table_name table_name column = conn.quote_column_name klass._state_property namespaced_col = "#{table}.#{column}" states = [state].concat specification_klass.specification.descendant_names.map{|s| "#{state}.#{s}"} query = "#{namespaced_col} in (?)" where(query, states) } end after_initialize do self.state_managers ||= {} end before_validation do validate_states! end # Callback hooks after_commit(:on => :create) { state_managers.values.map(&:after_commit) } after_commit(:on => :update) { state_managers.values.map(&:after_commit) } before_save { state_managers.values.map(&:before_save) } after_save { state_managers.values.map(&:after_save) } end end