提交 0e2d18e4 编写于 作者: J Jeremy Kemper

Extract state query method definition and quiet method redefinition warning.

上级 0492759d
......@@ -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
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册