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