lib/stateful_enum/machine.rb in stateful_enum-0.3.0 vs lib/stateful_enum/machine.rb in stateful_enum-0.3.1
- old
+ new
@@ -1,5 +1,7 @@
+# frozen_string_literal: true
+
module StatefulEnum
class Machine
def initialize(model, column, states, prefix, suffix, &block)
@model, @column, @states, @event_names = model, column, states, []
@prefix = if prefix == true
@@ -39,11 +41,11 @@
# defining event methods
model.class_eval do
# def assign()
detect_enum_conflict! column, new_method_name
define_method new_method_name do
- to, condition = transitions[self.send(column).to_sym]
+ to, condition = transitions[send(column).to_sym]
#TODO better error
if to && (!condition || instance_exec(&condition))
#TODO transaction?
instance_eval(&before) if before
original_method = self.class.send(:_enum_methods_module).instance_method "#{prefix}#{to}#{suffix}!"
@@ -62,16 +64,16 @@
end
# def can_assign?()
detect_enum_conflict! column, "can_#{new_method_name}?"
define_method "can_#{new_method_name}?" do
- transitions.has_key? self.send(column).to_sym
+ transitions.key? send(column).to_sym
end
# def assign_transition()
detect_enum_conflict! column, "#{new_method_name}_transition"
define_method "#{new_method_name}_transition" do
- transitions[self.send(column).to_sym].try! :first
+ transitions[send(column).to_sym].try! :first
end
end
end
def transition(transitions, options = {})