Rails AASM 助手,用于链接可能进入的状态。方法调用的前缀
Rails AASM helper for links for which state it may go to. Prefix to method call
在 AASM 中,您可以按照 AASM 中的示例代码调用 may_run?
。
对象:
class Job
include AASM
aasm do
state :sleeping, :initial => true
state :running, :cleaning
event :run do
transitions :from => :sleeping, :to => :running
end
event :clean do
transitions :from => :running, :to => :cleaning
end
event :sleep do
transitions :from => [:running, :cleaning], :to => :sleeping
end
end
end
示例
job = Job.new
job.sleeping? # => true
job.may_run? # => true
job.run
job.running? # => true
job.sleeping? # => false
job.may_run? # => false
job.run # => raises AASM::InvalidTransition
如果我将对象和动作作为参数传入,如何创建一个帮助程序测试动作的 may_
。本质上,我想使用类似于此的帮助器为方法调用添加前缀:
def state_action_url(job, state)
if job.may_state?
#link_to action
else
#render disabled link text
end
end
你可以这样使用:
def state_action_url(job, state)
if job.public_send("may_#{state}?")
#link_to action
else
#render disabled link text
end
end
在 AASM 中,您可以按照 AASM 中的示例代码调用 may_run?
。
对象:
class Job
include AASM
aasm do
state :sleeping, :initial => true
state :running, :cleaning
event :run do
transitions :from => :sleeping, :to => :running
end
event :clean do
transitions :from => :running, :to => :cleaning
end
event :sleep do
transitions :from => [:running, :cleaning], :to => :sleeping
end
end
end
示例
job = Job.new
job.sleeping? # => true
job.may_run? # => true
job.run
job.running? # => true
job.sleeping? # => false
job.may_run? # => false
job.run # => raises AASM::InvalidTransition
如果我将对象和动作作为参数传入,如何创建一个帮助程序测试动作的 may_
。本质上,我想使用类似于此的帮助器为方法调用添加前缀:
def state_action_url(job, state)
if job.may_state?
#link_to action
else
#render disabled link text
end
end
你可以这样使用:
def state_action_url(job, state)
if job.public_send("may_#{state}?")
#link_to action
else
#render disabled link text
end
end