Extract state query method definition and quiet method redefinition warning.
This commit is contained in:
parent
0492759db3
commit
0e2d18e415
@ -31,6 +31,12 @@ def state_machine(name = nil, options = {}, &block)
|
||||
state_machines[name] ||= Machine.new(self, name)
|
||||
block ? state_machines[name].update(options, &block) : state_machines[name]
|
||||
end
|
||||
|
||||
def define_state_query_method(state_name)
|
||||
name = "#{state_name}?"
|
||||
undef_method(name) if method_defined?(name)
|
||||
class_eval "def #{name}; current_state.to_s == %(#{state_name}) end"
|
||||
end
|
||||
end
|
||||
|
||||
def current_state(name = nil, new_state = nil, persist = false)
|
||||
|
@ -5,11 +5,8 @@ class State
|
||||
|
||||
def initialize(name, options = {})
|
||||
@name = name
|
||||
machine = options.delete(:machine)
|
||||
if machine
|
||||
machine.klass.send(:define_method, "#{name}?") do
|
||||
current_state.to_s == name.to_s
|
||||
end
|
||||
if machine = options.delete(:machine)
|
||||
machine.klass.define_state_query_method(name)
|
||||
end
|
||||
update(options)
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user