module Etat::ActiveRecord::ClassMethods
Public Instance Methods
event(event_name, &block)
click to toggle source
# File lib/etat/active_record.rb, line 27 def event event_name, &block define_method(event_name) do instance_eval &block end end
has_states(*states)
click to toggle source
# File lib/etat/active_record.rb, line 14 def has_states *states @states = [] states.each do |state| if state.is_a?(Symbol) create_state_with state create_scopes state @states << state else raise 'States should be symbol' end end end
states()
click to toggle source
# File lib/etat/active_record.rb, line 33 def states @states end
Private Instance Methods
create_scopes(state)
click to toggle source
# File lib/etat/active_record.rb, line 38 def create_scopes state self.class_eval <<-RUBY, __FILE__, __LINE__ + 1 scope "all_#{state}", -> { where(state: state) } scope "all_but_#{state}", -> { where("state != ?", state) } RUBY end
create_state_with(state)
click to toggle source
# File lib/etat/active_record.rb, line 46 def create_state_with state define_method("#{state}?") do self.state == state.to_sym end end